Мы пытаемся загрузить огромный файл (скажем, размер ~ 1 ГБ) в базу данных Oracle через SQL Loader.Я создал Java-программу, которая будет выполнять команду SQLLoader из программы, и загрузчик загрузит файл в таблицу.
Мой код:
public void invokeSQLLoader(){
String stringCommand="/usr/lib/oracle/18.3/client64/bin/sqlldr <userId>/<password>@<dburl> control=/u01/hmpoc/HM_EDW_PASSBACK.ctl data=/u01/hmpoc/Passback_Report.csv bad=/u01/hmpoc/PASSBACK.bad discard=/u01/hmpoc/PASSBACK.dsc log=/u01/hmpoc/PASSBACK.log ERRORS=1000000";
System.out.println("Passing Command::"+stringCommand);
Process proc = null;
try {
System.out.println("Starting procedure call---"+new java.util.Date());
Runtime rt = Runtime.getRuntime();
proc = rt.exec(stringCommand.trim());
System.out.println("End Procedure call---"+new java.util.Date());
}catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}/*finally {
proc.destroy();
}*/
System.out.println("SQLLDR Ended");
}
Вопрос и запрос ко всем экспертам:
Когда размер файла составляет ~ 40 МБ, мы можем загрузить данные через мою программу на Java.
Когда размер файла> 42 МБ, Java-программа работает успешно, но данные не загружаются вместе с файлом.В консоли Java не отображаются ошибки или исключения.Где, как будто я выполнил ту же команду из командной строки с тем же файлом управления и файлом данных, который он загружает.
Может кто-нибудь, пожалуйста, помогите мне?Если я что-то упустил или каков наилучший способ вызвать sqlloader из Java-программы помимо моего подхода.