Я столкнулся со странной проблемой, пытаясь перейти с сервера SQL на оракула.в одной из моих таблиц у меня есть столбец, определенный NVARCHAR(255)
, после прочтения я понял, что SQL-сервер считает символы, когда оракул подсчитывает байты.Поэтому я определил мою таблицу в oracle как VARCHAR(510)
255 * 2 = 510. Но при использовании sqlldr для загрузки данных из текстового файла с разделителями табуляции я получаю сообщение об ошибке, указывающее, что некоторые записи превысили длину этого столбца.после проверки на сервере sql с помощью:
SELECT MAX(DATALENGTH(column))
FROM table
я получаю, что максимальная длина данных составляет 510.
Я действительно использую Collationg Hebrew_CI_AS, хотя я не думаю, что это что-то меняет ....Я проверил в SQL Server также, если какая-либо из записей содержит TAB, но нет ... так что я думаю, это не поврежденные данные .... У кого-нибудь есть идея?
РЕДАКТИРОВАТЬ ПослеПри дальнейшей проверке я заметил, что проблема связана с файлом данных (в дополнение к проблеме, решаемой сообщением @Justin Cave.
Я изменил разделитель строк на '^', поскольку ни одна из моих данных не содержитэтот символ и '| ^ |' в качестве разделителя столбцов.
создает управляющий файл следующим образом:
load data
infile data.txt "str '^'"
badfile "data_BAD.txt"
discardfile "data_DSC.txt"
into table table
FIELDS TERMINATED BY '|^|' TRAILING NULLCOLS
(
col1,
col2,
col3,
col4,
col5,
col6
)
Проблема состоит в том, что мои данные содержат <CR>
и sqlldr ожидает файл потокасуществует ошибка на <CR>
!!!! Я не хочу изменять данные, так как это текстовые данные (сообщения об ошибках для примеров).