2017-06-05 388 views
1

我想使用PostgreSQL数据库使用java进行备份。 我试着用下面的代码,但我得到:如何使用Java进行PostgreSQL数据库备份

错误的pg_dump:太多的命令行参数(第一个是“Postgres的”)尝试“pg_dump的--help”的详细信息。

Runtime r = Runtime.getRuntime(); 
Process p; 
ProcessBuilder pb; 
r = Runtime.getRuntime(); 
pb = new ProcessBuilder( 
     "/usr/pgsql-9.3/bin/pg_dump", 
     "--host", "localhost", 
     "--port", "5432", 
     "--username", "postgres", 
     "--dbname", "postfixdb", 
     "--role", "postgres", 
     "--password"," postgres", 
     "--verbose", 
     "/usr/pg_dump.backup"); 
pb.redirectErrorStream(true); 
p = pb.start(); 
InputStream is = p.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String ll; 
while ((ll = br.readLine()) != null) { System.out.println(ll); } 

回答

1

的调用语法和允许的选项的列表,请the psql documentation

尝试首先在命令行上运行它,并且只有当它成功时,才尝试从Java运行它。

名单OB明显的错误:

  • 为“用户”的选项-U(大写)。

  • -p用于TCP端口号。

  • 没有-B选项。

  • 没有-r选项。

+0

我试了一下这个代码在windos for mysql中,在他们的这段代码正在工作,但这里没有。这些都有不同的语法? – user4383047

+0

是的,因为它们是不同的程序。 MySQL和PostgreSQL不一样。 –

+0

兄弟,我在这里尝试了这个新的代码创建备份文件,但空的和线阅读器不执行。只能在控制台上进行“aaaa”打印。 – user4383047