Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице. При импорте из файла Excel

У меня есть файл excel с четырьмя текстовыми столбцами: один из них называется ShortDescription, который имеет самое длинное значение. Я создал таблицу в базе данных SQL Server 2008 с четырьмя столбцами, а тип столбца ShortDescription установлен в NvarChar (Max).

но при использовании диалога импорта и экспорта SSIS я продолжаю получать указанную ошибку в заголовке, даже когда я устанавливаю опцию OnTruncation для игнорирования.

Я попытался очистить данные столбца, и это удалось (поэтому я убедился, что проблема находится в столбце ShortDescription). Я попытался скопировать все данные в другую рабочую книгу Excel, но до сих пор не повезло.

любые идеи

Ответ 1

Я предполагаю, что вы пытаетесь импортировать это, используя источник Excel в диалоговом окне SSIS?

Если это так, вероятно, проблема заключается в том, что SSIS отображает некоторое количество строк в начале вашей электронной таблицы при создании источника Excel. Если в столбце [ShortDescription] он не замечает ничего слишком большого, по умолчанию будет помечен столбец с текстом в 255 символов.

Итак, чтобы импортировать данные из столбца, содержащего строки с большими объемами данных без усечения, есть два варианта:

  • Вы должны убедиться, что столбец [ShortDescription] по крайней мере в одной из выборочных строк содержит значение, превышающее 255 символов. Один из способов сделать это - использовать функцию REPT(), например. = REPT ('z', 4000), который создаст строку из 4000 букв "z".
  • Вы должны увеличить количество строк, выбранных драйвером Jet Excel, чтобы включить такую ​​строку. Вы можете увеличить количество строк, выбранных путем увеличения значения TypeGuessRows в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (если ваша система равна x64, то под HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel) раздел реестра.

Вы можете увидеть дополнительную информацию по этим двум ссылкам:

Для дальнейшего объяснения, SSIS создает 3 объекта за кулисами мастера, объект источника данных Excel, объект назначения таблицы SQL и оператор потока данных между ними. Исходный объект Excel определяет исходные данные и существует независимо от двух других объектов. Поэтому, когда он был создан, описанная нами выборка выполнена и задан размер столбца источника. Таким образом, к тому моменту, когда оператор потока данных выполняет и пытается вытащить данные из excel для размещения в вашей таблице, он уже смотрит на источник данных, который ограничен 255 символами.

Ответ 2

У меня возникла эта проблема при импорте из плоского файла с разделителями в SQL Server. Решение состояло в том, чтобы обновить значение "OutputColumnWidth" для столбца-нарушителя (из сообщения об ошибке). В форме "Выбрать источник данных" в мастере импорта моим источником был плоский файл. В самой левой панели выберите "Дополнительно". Затем вы можете установить свойства отдельных столбцов. В моем случае "OutputColumnWidth" для большинства моих столбцов по умолчанию был равен "50". Я просто обновил его до большего значения, которое не урезало бы значение из плоского файла.

enter image description here

Ответ 3

Простым способом заставить его работать - отредактировать файл, который вы хотите импортировать, и создать новую строку в первом месте. Таким образом, он будет всегда отбираться. Затем для любых столбцов, которые могут иметь > 255 символов, просто добавьте 255 ярлыков в ячейку, и она будет работать. После импорта просто удалите лишнюю строку, добавленную вами.

Ответ 4

Я получил эту ошибку, когда пытался импортировать большой файл с несколькими китайскими символами в нем, а также некоторые недопустимые (большие) строки.

Текстовый файл был сохранен в формате UTF8.

Мои настройки:

В общем варианте (ничего не изменилось):

- Locale: English (United States) 
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)

В левой части находится расширенный параметр

- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that the maximum) (changed)

В отношении отображения типов данных просмотра

- On Error: Ignore
- On Truncation: Ignore

Мой целевой столбец имел ширину = 50.

У меня нет ошибок с этими настройками.

Ответ 5

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

Если вы не можете найти его на

Пуск- > RUN- > RegEdit- > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

затем загляните в

Пуск- > RUN- > RegEdit- > HKEY_LOCAL_MACHINE → ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ → Wow6432Node → Microsoft → Jet → 4.0 → Двигатели → Excel

Ответ 6

Для меня эта ссылка помогла мне: https://support.microsoft.com/en-us/kb/189897

  • Скопировать строку со значением ячейки > 255 символов в начало excel, сделать эту строку первой строкой в ​​excel
  • измените значение реестра из приведенной выше ссылки.