我想使用pg_dump备份和恢复postgresql数据库。问题是:当我执行此命令时,在命令行中:
pg_dump -h localhost -p 5432 -U postgres -F t -f test2.tar myDatabase
我收到此 prompet 消息以提供数据库密码:
Mot de passe :
所以,它有效
但是,在Java的上下文中:我只能做:
String cmd = "pg_dump -U postgres -h localhost -p 5342";
cmd += " -F t -f " + file.getCanonicalPath();
cmd += " myDatabase";
Process p = Runtime.getRuntime().exec(cmd);
int result= p.waitFor();
if (result == 0) {
System.out.println("Backup created successfully");
} else {
System.out.println("There is an error");
}
上面的代码不起作用。那么,我可以做些什么来在运行时提供数据库密码?
来自 PostgreSQL 文档关于pg_dump:
-w
--无密码
切勿发出密码提示。如果服务器需要密码身份验证,并且密码无法通过其他方式(如 .pgpass 文件)获得,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。
那么,您可以尝试在pg_dump
命令上传递-w
选项并提供带有密码的.pgpass
文件吗?