从java

时间:2016-01-01 22:55:56

标签: java postgresql pg-dump

在使用Java for postgres执行某些查询作为字符串的问题之后,我使用了字符串数组,这解决了我现有的问题。

切换后,我现在遇到pg_dump的问题,但问题不是pg_restore

当我使用以下数组提供我的方法时:

[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, data/completedDb.dump]

我收到以下错误:

  

pg_dump:命令行参数太多(首先是   “数据/ completedDb.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正在作为单个字符串正确执行。我不想回到那个方法,因为我想保持一致性,但我也想知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:3)

您应该在输出文件名之前使用-f,因为默认情况下pg_dump输出到stdout。

尝试

[时间,。/ ppg_dump,-U,lehigh,-d,lehigh,-Fc,-f,data / completedDb.dump]