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



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



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



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



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

903   6  

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\программное обеспечение\Майкрософт\двигателя\двигателей\4.0\Эксел

тогда загляни в

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

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

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

Comments

    Ничего не найдено.