我正在尝试从 Java 方法运行 SQL Loader,但我遇到了问题。
我正在创建一个运行时进程来运行 SQLLDR 命令,但并未加载数据文件中的所有行。相反,无论数据文件中的总行数如何,它都会停留在相同的行数(5184 行)。
但是,当我复制完全相同的命令并直接从命令提示符运行它时,它运行良好并且所有行都被加载。
知道这个问题的原因是什么吗?我需要更改 Java 中的某种缓冲区大小吗?
谢谢!
// Run SQL Loader after creating the control file
Runtime rt = Runtime.getRuntime();
String sqlLoaderPath = "C:\\app\\product\\11.1.0\\client_1\\BIN\\";
String cmd = sqlLoaderPath + "SQLLDR.EXE userid=***************************"
+ "data=c:\\sqlldr\\sqlldr_data.dat "
+ "control=c:\\sqlldr\\sqlldr_control.ctl "
+ "log=c:\\sqlldr\\sqlldr_log.log "
+ "discard=c:\\sqlldr\\sqlldr_discard.disc "
+ "bad=c:\\sqlldr\\sqlldr_bad.bad ";
Process proc = rt.exec(cmd);
int exitVal = proc.waitFor();
proc.destroy();