Postgresql 使用带有密码的 java 进行备份和还原



我想使用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文件吗?

最新更新