Invoke SQL Loader из Java-программы не работает, если размер файла> 40 МБ - PullRequest
0 голосов
/ 11 октября 2018

Мы пытаемся загрузить огромный файл (скажем, размер ~ 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");
}

Вопрос и запрос ко всем экспертам:

  1. Когда размер файла составляет ~ 40 МБ, мы можем загрузить данные через мою программу на Java.

  2. Когда размер файла> 42 МБ, Java-программа работает успешно, но данные не загружаются вместе с файлом.В консоли Java не отображаются ошибки или исключения.Где, как будто я выполнил ту же команду из командной строки с тем же файлом управления и файлом данных, который он загружает.

Может кто-нибудь, пожалуйста, помогите мне?Если я что-то упустил или каков наилучший способ вызвать sqlloader из Java-программы помимо моего подхода.

1 Ответ

0 голосов
/ 14 октября 2018

Я получил ответ.Я не внес никаких изменений в мой вышеупомянутый Java-код.Я только добавил DIRECT = TRUE в мой контрольный файл.Оно работает.Теперь я могу загрузить файл размером до 1 ГБ.

Спасибо всем, кто прочитал мою проблему и попытался дать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...