嘿,
我尝试从java应用程序转储postgresql数据库。
在cmd中,它运行正常:
pg_dump -U user database>outfile.sql
和CMD提示输入密码
要从我的java访问此命令行:
Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql");
现在它在等待密码。
我用Runtime.getRuntime().exec(String[])...
试过了,但是什么都没有。
不知何故,我必须在.exec()
方法中设置参数'password‘,
pg_dump语句不接受其命令行中的密码。
发布于 2012-02-05 14:46:31
谢谢麦克斯
我试过了
Process p = Runtime.getRuntime().exec(cmd);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
bw.write("password");
//bw.eriteLine();
bw.flush();
但还是一无所获。我使用InputStreamReader查看来自cmd执行的错误或消息,而不是任何东西。它仍然在等待“Password”。
但我有另一个解决方案:
Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\"pg_dump -U user -W db>outfile.sql\"");
因此,黑色提示器打开时会显示“Password:”。写下密码,按回车键,它就会响。
这对我来说已经足够了。
谢谢
发布于 2013-12-02 17:40:41
未按"Enter“键。下面的修改为我做了一件事:
bw.write("password" + "\n");
发布于 2018-06-13 04:10:33
完整的工作解决方案:
Process process = Runtime.getRuntime().exec(cmd);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("password\n");
bw.flush();
尝试更新@cortexiphan解决方案,但我的编辑被拒绝。
https://stackoverflow.com/questions/9143616
复制相似问题