在执行一个关于在Java中执行字符串查询的问题后,我使用了字符串数组,解决了我现有的问题。
切换后,我现在有一个pg_dump的问题,但不是pg_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

我正在postgres数据库上的Java中通过eclipse运行此命令,使用:
 Runtime.getRuntime().exec();

我试过使用Process.start()但也有同样的错误,所以我对自己做错了什么感到非常震惊。
在此更改之前,pg_dump作为单个字符串正确执行。我不想回到那个方法,因为我想保持一致性,但我也想找出我在这里做错了什么。

最佳答案

您应该在输出文件名之前使用-f,因为默认情况下pg_将输出转储到stdout。
尝试
[时间,/pg_dump,-U,lehigh,-d,lehigh,-Fc,-f,数据/completedDb.dump]

08-07 17:35