在执行一个关于在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]