Postgresql使用带密码的java备份和恢复

时间:2016-03-12 19:57:48

标签: java postgresql backup restore

我想使用pg_dump备份和恢复postgresql数据库。 问题是: 在命令行中执行此命令时:

pg_dump -h localhost -p 5432 -U postgres  -F t -f test2.tar  myDatabase

我得到这个提示消息提供数据库密码:

 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");
                }

以上代码无效。那么,我可以做些什么来在运行时提供数据库密码?

1 个答案:

答案 0 :(得分:2)

关于pg_dump的PostgreSQL文档:

  

-w

     

- 无密码

     

永远不会发出密码提示。如果服务器需要密码身份验证,并且其他方式(如.pgpass文件)无法使用密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中非常有用。

那么您是否可以尝试在-w命令上传递pg_dump选项,并为.pgpass file提供密码?