从java调用pg_dump时命令行参数过多

从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为我的执行生成

在Java for postgres中以字符串形式执行一些查询时遇到了一个问题,我使用字符串数组解决了现有的问题

切换之后,我现在遇到了
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”是为了我!!!!!