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

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

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

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

какие идеи ???

6 ответов


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

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

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

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

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

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


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

enter image description here


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


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

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

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

по общей опции (ничего не менял):

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

есть расширенный вариант слева

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

о сопоставлении типов данных обзора

- On Error: Ignore
- On Truncation: Ignore

моя цель колонны ширина = 50.

у меня нет ошибок с этими параметрами.


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

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

Пуск - >Выполнить - >RegEdit - >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

тогда посмотри в

Пуск - >Выполнить - >RegEdit - >HKEY_LOCAL_MACHINE - > программное обеспечение - > Wow6432Node - > Microsoft - > Jet - > 4.0 - >двигатели - > Excel


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

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