2014-09-03 3 views
0

Я импортирую файл uns unicode csv, используя SSIS в SQL Server. Я получаю сообщение об ошибке «Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице». Он не работает в столбце 0 в строке 70962, который имеет данные точно так же, как и все остальные строки; данные в первом столбце больше, чем данные в строках выше него.Странная/непоследовательная ошибка импорта строки SSIS

Мой столбец 0 определен в плоском подключении к файлу и в базе данных шириной 255. Данные в строке 70692 (и большинство других строк) составляют 17 символов.

Странная вещь, если я удаляю строку над строкой 70962 в файле, даже первую строку и сохраняю файл csv, тогда импорт работает нормально. Если я заменил эту удаленную строку и запустил импорт, он снова не сработает.

Так что я даже не уверен, как определить, в чем проблема.

Если я создаю новое соединение с плоским файлом, которое представляет собой один столбец, я могу импортировать весь файл в таблицу с одним столбцом. Но как только я добавляю первый разделитель столбцов (т. Е. Второй столбец), тогда он терпит неудачу в этой же строке.

На данный момент я просто не знаю, как отладить это дальше.

+0

Времена вроде этого, я вытаскиваю [XVI32] (http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm), чтобы искать гремлины в данных. Другой вариант - написать быстрый синтаксический анализатор в .NET, чтобы попытаться найти непревзойденные строки. – billinkc

ответ

0

Вы уже дали ответ на свой вопрос;)

если я удалить строку выше строки 70962 в файле, даже первый ряд, и сохранить файл CSV, то импорт работает отлично.

У вас сломанный разделитель где-то в файле. когда вы удаляете какие-либо данные перед оскорбительной строкой, несоответствие разделителей, вероятно, неправильно обрабатывается, а просто остается открытым до самого конца файла, после которого программа обрабатывает его для вас.

Проверьте разделители строк и столбцов строки выше указанной вами и той самой строки.

+0

Строка непосредственно выше выглядит отлично. Я не уверен в логике: конечно, если я удалю Row 1, а строка 1 не проблематична, ошибка все равно возникнет? – Sean

+0

Если в какой-либо строке имеется слишком много разделителя или отсутствует, удаление другой строки иногда может быть «смещено», из-за чего различие «толкается» в конец файла. – Tristan

+0

Нет заметной проблемы с строкой, расположенной выше, так что может ли проблема быть в любой из предыдущих 70961 строк? Могу ли я отключить его от нажатия ошибки и получить его на ошибку в соответствующей строке - т. Е. Строгая проверка ограничителя? – Sean

Смежные вопросы