Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице. При импорте из файла 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
- измените значение реестра из приведенной выше ссылки.