Невозможно загрузить большой объем данных при запуске процесса загрузчика SQL через Java

Мой пример CSV-файла, который мне нужно загрузить в БД, содержит чуть более 10000 записей. Я выполняю команду sql loader через вызов метода Java:

process = Runtime.getRuntime().exec(sqlLdrCmd);

это загружает 4924 записи, а затем выполнение просто зависает в ожидании загрузки CSV.

Я просто хотел подчеркнуть, что это всего лишь образец CSV, который я использую, мой настоящий CSV будет содержать около миллиона записей.

Мой файл CTL выглядит примерно так:

OPTIONS (SKIP=1)
LOAD
  DATA 
  INFILE 'samples.csv'

  BADFILE 'samples.bad'
  DISCARDFILE 'samples.dsc'
  APPEND INTO TABLE TAB_SAMPLE
    EVALUATE CHECK_CONSTRAINTS
    REENABLE DISABLED_CONSTRAINTS
    EXCEPTIONS EXCEPTION_TABLE
  FIELDS TERMINATED BY "," 
  OPTIONALLY ENCLOSED BY '"'
  TRAILING NULLCOLS
  ( 
    SOURCE_NAME,
ASSOC1_NAME,
ASSOC2_NAME,
ASSOC3_NAME,
ENTITY_NAME,
ATTRIBUTE_GROUP,
ATTRIBUTE_NAME,
TYPE,
STRING_VALUE,
INTEGER_VALUE,
LONG_VALUE,
FLOAT_VALUE,
DOUBLE_VALUE,
BOOLEAN_VALUE,
TIMESTAMP_VALUE,
TIME_POINT_VALUE
)

Команда работает очень хорошо и загружает все данные, когда я выполняю из приглашения напрямую.

Для этой таблицы нет ограничений по внешнему ключу

пожалуйста, предложите выход, дайте мне знать, если что-то неясно

1 ответ

Я думаю, что вы должны разделить процесс. Я не знаю, какую базу данных вы используете, но SQL-сервер имеет ограничение 8 КБ.

Другие вопросы по тегам