我有一个 java 代码,我通过它调用 bat 文件。此 bat 文件包含对 sqlldr 的调用,该调用将数据从 txt 文件加载到表中(在 oracle 中)。这是调用bat文件的java代码
ProcessBuilder pb = new ProcessBuilder(new File(".").getAbsolutePath()
+ File.separator + "ld.bat");
System.out.println("Before start");
Process start;
try {
start = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
在此代码下方,我正在创建新线程并执行其他任务。数据的加载在后台进行。加载完成后,我想做一些任务(例如,将 txt 数据文件移动到另一个位置)。有没有办法在 sqlldr 完成数据加载后得到通知。我遇到了一个解决方法 - 我可以继续检查 d 表中的行数并将其与原始 txt 文件中的行数进行比较。但我想知道是否有其他解决方案。我也不想使用start.waitFor()
,因为这会使我的其他活动暂停。