1
pg_dumpの出力をpsqlにパイプして、データベースデータベースにデータベースダンプをインポートしようとしています。我々は、コマンドラインでコマンドを実行すると、それが正常に動作しますが、それは、JavaProcessBuilder内のpg_dump引数が多すぎます
のProcessBuilder
これは、それがどのように見えるかあるの内側に失敗します。
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h" + hostRemote,
"-p" + portRemote, "-U" + usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h" + hostLocal, "-p" + portLocal, "-U" + usernameLocal, dbNameLocal);
そして、これは我々が得ているエラーです。pg_dumpの:コマンドライン引数が多すぎます(最初のものは|)。
私たちが見ていない特別なキャッチはありますか?どんな助けもありがとう。
EDIT:別のトークンをクリーンアップ:
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h", hostRemote,
"-p", Integer.toString(portRemote), "-U", usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h", hostLocal, "-p", Integer.toString(portLocal),
"-U", usernameLocal, dbNameLocal);
配列またはリストを作成し、各トークンをリストまたは配列内の独自の項目にする必要があります。 –
のように、文字列を空白で連結し、それをトークンとして入力します。そうではありません。代わりに、文字列トークンに空白がない別のトークンとしてそれらを区切ります。 '' -h "+ hostRemote、' '-h ''、hostRemote、' –
ではなく、ストリームを適切にキャプチャしていますか? –