从 java 调用 pg_dump 时命令行参数过多
Too many command-line arguments when calling pg_dump from java
在 运行 遇到关于在 Java for postgres 中将一些查询作为字符串执行的问题后,我开始使用字符串数组,这解决了我现有的问题。
切换后,我现在遇到了 pg_dump
的问题,但 pg_restore
没有。
当我为我的方法提供以下数组时:
[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, data/completedDb.dump]
我收到以下错误:
pg_dump: too many command-line arguments (first is
"data/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,在 Java 的 postgres 数据库中,使用 :
Runtime.getRuntime().exec();
我试过使用 Process.start()
但得到了同样的错误,所以我对我做错的事情感到完全傻眼。
在此更改之前,pg_dump
作为单个字符串正确执行。我不想回到那种方法,因为我想保持一致性,但我也想弄清楚我在这里做错了什么。
您应该在输出文件名前使用 -f,因为默认情况下 pg_dump 输出到标准输出。
尝试
[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, -f, data/completedDb.dump]
在 运行 遇到关于在 Java for postgres 中将一些查询作为字符串执行的问题后,我开始使用字符串数组,这解决了我现有的问题。
切换后,我现在遇到了 pg_dump
的问题,但 pg_restore
没有。
当我为我的方法提供以下数组时:
[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, data/completedDb.dump]
我收到以下错误:
pg_dump: too many command-line arguments (first is "data/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,在 Java 的 postgres 数据库中,使用 :
Runtime.getRuntime().exec();
我试过使用 Process.start()
但得到了同样的错误,所以我对我做错的事情感到完全傻眼。
在此更改之前,pg_dump
作为单个字符串正确执行。我不想回到那种方法,因为我想保持一致性,但我也想弄清楚我在这里做错了什么。
您应该在输出文件名前使用 -f,因为默认情况下 pg_dump 输出到标准输出。
尝试
[time, ./pg_dump, -U, lehigh, -d, lehigh, -Fc, -f, data/completedDb.dump]