Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице при импорте из файла Excel
У меня есть файл Excel с четырьмя столбцами текста: один из них называется ShortDescription, который имеет самое длинное значение. Я создал таблицу в базе данных SQL Server 2008 с четырьмя столбцами, а тип столбца ShortDescription установлен в NvarChar(Max).
но при использовании диалога импорта и экспорта служб SSIS я продолжаю получать упомянутую ошибку в заголовке, даже когда я устанавливаю параметр OnTruncation игнорировать.
Я попытался очистить данные столбца, и это удалось (поэтому я сделал уверен, что проблема находится в столбце ShortDescription). Я попытался скопировать все данные в другую рабочую книгу excel, и все равно не повезло.
какие идеи ???
6 ответов
Я предполагаю, что вы пытаетесь импортировать это с помощью источника Excel в диалоговом окне SSIS?
Если это так, проблема, вероятно, в том, что SSIS образцы некоторое количество строк в начале электронной таблицы при создании источника Excel. Если в столбце [ShortDescription] он не заметит ничего слишком большого, по умолчанию он будет иметь 255-символьный текстовый столбец.
поэтому для импорта данных из столбца, содержащего строки с большими объемами данных без усечения, существуют два варианта:
- необходимо убедиться, что столбец [ShortDescription] по крайней мере в одной из выборочных строк содержит значение длиной более 255 символов. Один из способов сделать это-использовать функцию REPT (), например =REPT('z', 4000), которая создаст строку из 4000 буквы "z".
- для включения такой строки необходимо увеличить количество строк, отобранных драйвером Jet Excel. Вы можете увеличить количество строк, отобранных путем увеличения значения TypeGuessRows под
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet.0\Engines\Excel
(Если ваша система x64, то подHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet.0\Engines\Excel
) раздел реестра.
Вы можете посмотреть более подробную информацию по этим двум ссылкам:
- http://waxtadpole.wordpress.com/2008/04/28/hello-world/
- http://technet.microsoft.com/en-us/library/ms141683.aspx
для дальнейшего объяснения SSIS создает 3 объекта за кулисами мастера, объект источника данных Excel, таблицу SQL объект назначения и оператор потока данных между ними. Исходный объект Excel определяет исходные данные и существует независимо от двух других объектов. Поэтому, когда он создан, выборка, которую я описал, выполнена, и размер исходного столбца установлен. Таким образом, к тому времени, когда оператор потока данных выполняет и пытается вытащить данные из excel, чтобы поместить их в таблицу, он уже смотрит на источник данных, ограниченный 255 символами.
У меня была эта проблема при импорте из плоского файла с разделителями в SQL Server. Решение состояло в том, чтобы обновить значение "OutputColumnWidth" для оскорбительного столбца (из сообщения об ошибке). В форме "выбор источника данных" в Мастере импорта моим источником был плоский файл. На левой панели выберите "дополнительно". Затем можно задать свойства отдельных столбцов. В моем случае "OutputColumnWidth" для большинства моих столбцов был по умолчанию равен "50". Я просто обновил его до большего размера значение, которое не будет усекать значение из плоского файла.
простой способ заставить ее работать-редактировать файл, который вы хотите импортировать и создать новую строку в первом месте. Таким образом, он всегда будет отбираться. Затем для любых столбцов, которые могут иметь >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
- скопируйте строку, которая имеет значение ячейки > 255 символов в начало excel, сделайте эту строку первой строкой в excel
- измените значение реестра из приведенной выше ссылки.