私はこの問題を多くの場所で見ました。つまり、PostgreSQLからプログラムでバックアップを作成する際の問題です。私の解決策はExpectJを使用することですが、コードを機能させるのに問題があります。
私は次のコードを持っています:
public class BackupUtility
{
public static void main(String[] args)
{
try
{
ExpectJ exp = new ExpectJ(20);
Spawn shell = exp.spawn("\"C:\\Program Files\\PostgreSQL\\8.4\\bin\\pg_dump.exe\" " +
"-h localhost -U myUserName myDB");
shell.expect("Password: ");
shell.send("myPassword");
System.out.println(shell.getCurrentStandardOutContents());
shell.expectClose()
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
ただし、shell.expect行では、タイムアウトになっています。
コマンドプロンプトからこのコマンドを実行すると、次のようになります。
C:\ Documents and Settings \ bobjonesthe3rd> "C:\ Program Files \ PostgreSQL \ 8.4 \ bin \ pg_dump" -h localhost -U myUserName myDB
パスワード:
つまり、パスワードの入力を求めるプロンプトが表示されることはわかっていますが、ExpectJは何らかの理由でプロンプトを受信していません。
どんな助けでも大歓迎です。
ありがとう、マット