Невозможно загрузить большой объем данных при запуске процесса загрузчика 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 КБ.