2017-06-05 386 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