Используя Oracle SQL * Loader, я пытаюсь загрузить столбец, который был строкой переменной длины (lob) в другой базе данных, в столбец varchar2 (4000) в Oracle. У нас есть строки намного длиннее 4000 символов, но все согласны с тем, что эти строки можно и нужно обрезать при миграции (мы смотрели данные, которые выходят за пределы 4000 символов, это не имеет смысла). Для этого я указал столбец таким образом в управляющем файле:
COMMENTS CHAR(65535) "SUBSTR(:COMMENTS, 1, 4000)",
Однако SQL*Loader по-прежнему отклоняет любую строку, в которой эта запись длиннее 4000 символов в файле данных:
Запись 6484: отклонено — ошибка в таблице LOG_COMMENT, столбце COMMENTS. ORA-12899: слишком большое значение для столбца COMMENTS (фактическое: 11477, максимальное: 4000)
Запись 31994: отклонено — ошибка в таблице LOG_COMMENT, столбце COMMENTS. ORA-12899: слишком большое значение для столбца COMMENTS (фактическое: 16212, максимальное: 4000)
Запись 44063: отклонено — ошибка в таблице LOG_COMMENT, столбец COMMENTS. ORA-12899: слишком большое значение для столбца COMMENTS (фактическое: 62433, максимальное: 4000)
Я попытался взять гораздо меньшую подстроку и все равно получил ту же ошибку. Как я могу изменить свой управляющий файл, чтобы обрезать строковые данные длиннее 4000 символов в столбце varchar2 (4000)?