psql コマンドを実行して SQL スクリプト ファイルをインポートする .bat ファイルがあります。Windows コマンド ラインから .bat ファイルを実行すると、正しく実行されます。しかし、Java から (ProcessBuilder を使用して) .bat ファイルを呼び出すと、スクリプトが終了しません。InputStream、ErrorStream、DB (Postgresql) ログにもエラーはありません。
ArrayList<String> cmdArgs2 = new ArrayList<String>();
cmdArgs2.add("sql2dbs.bat");
ProcessBuilder pb2 = new ProcessBuilder(cmdArgs2);
logger.info(pb2.command().toString());
Map<String, String> env = pb2.environment();
env.put("PGPASSWORD", "user");
Process p2 = pb2.start();
BufferedReader stdError2 = new BufferedReader(new InputStreamReader(p2.getErrorStream()));
String s;
while ((s = stdError2.readLine()) != null) {
logger.info(s);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(p2.getInputStream()));
while ((s = stdIn.readLine()) != null) {
logger.info(s);
}
p2.waitFor();
SQL スクリプトは非常に長いため、追加していません。スクリプトには、下部に COMMIT ステートメントがあります。
何か案は?ありがとう、