从java调用pg_dump时命令行参数过多
在Java for postgres中以字符串形式执行一些查询时遇到了一个问题,我使用字符串数组解决了现有的问题 切换之后,我现在遇到了从java调用pg_dump时命令行参数过多,java,postgresql,pg-dump,Java,Postgresql,Pg Dump,在Java for postgres中以字符串形式执行一些查询时遇到了一个问题,我使用字符串数组解决了现有的问题 切换之后,我现在遇到了pg\u dump的问题,而不是pg\u restore的问题 当我为方法提供以下数组时: [time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, data/completedDb.dump] 我得到以下错误: pg_dump:命令行参数太多(首先是 “数据/已完成数据库转储”) ProcessBuilder为我的执行生成
pg\u dump
的问题,而不是pg\u restore
的问题
当我为方法提供以下数组时:
[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, data/completedDb.dump]
我得到以下错误:
pg_dump:命令行参数太多(首先是
“数据/已完成数据库转储”)
ProcessBuilder为我的执行生成以下内容:
time ./pg_dump -U lehigh -d lehigh -Fc data/completedDb.dump
当我在命令行上添加输出箭头并删除数据文件夹时,它可以正常工作
time ./pg_dump -U lehigh -d lehigh -Fc > completedDb.dump
我正在通过eclipse在postgres数据库上用Java运行此程序,使用:
Runtime.getRuntime().exec();
我尝试过使用Process.start()
,但也遇到了同样的错误,所以我对自己做错的事情完全目瞪口呆
在此更改之前,
pg_dump
作为单个字符串正确执行。我不想回到那个方法,因为我想保持一致性,但我也想找出我在这里做错了什么。您应该在输出文件名之前使用-f,因为默认情况下,pg_会将输出转储到stdout
试一试
[时间,./pg_dump,-U,lehigh,-d,lehigh,-Fc,-f,data/completedDb.dump]是的,这就是我所缺少的。谢谢非常感谢。我从golang打电话也遇到同样的问题!花了2个小时追踪这个。把“>”改成“-f”是为了我!!!!!