我有一个.bat文件,它执行psql命令来导入SQL脚本文件。当我从Windows命令行执行.bat文件时,它正确执行。但是当我从Java调用.bat文件(使用ProcessBuilder)时,脚本不会结束。我没有收到任何错误,不是在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语句。
有什么想法吗?谢谢,