Я использую SSIS 2012 и SQL Server 2014. У меня всегда была эта проблема, и я ЕЩЕ не видел жизнеспособного решения, и я не уверен, почему больше людей не сталкиваются с этой проблемой. Вот моя простая задача потока данных:
Я получаю многочисленные файлы Excel от клиентов. Проблема в том, что некоторые поля содержат текст, длина которого превышает 255 символов, а, как мы все знаем, Microsoft НЕ достаточно умна, чтобы читать все строки (читаются первые 8 записей и предполагается, что если первые 8 строк меньше 255 символов). символов, то ВСЕ строки должны быть меньше 255).
Конечно, это приводит к ошибкам усечения. Даже если я установлю для столбца назначения SQL значение nvarchar(max)
, SSIS все равно выдаст ошибку. Я уверен, что многие сталкивались с этой ошибкой, просто используя SSMS и импортируя файл Excel вручную. Для моего пакета SSIS у меня есть задача преобразования данных, которая предположительно преобразует исходные данные в формат, который затем можно перенести в SQL Server. Очевидно нет.
Вот моя простая задача потока данных с выделенным столбцом-нарушителем:
Итак, ограниченные решения, которые я нашел в Интернете, рекомендуют сортировать данные так, чтобы самое широкое текстовое значение находилось вверху, чтобы SQL Server мог его прочитать. Я не могу делать это для сотен файлов каждый раз. И мне нужны данные в исходном порядке сортировки, так что это нецелесообразно. Или я должен вставить фиктивную запись в качестве первой строки в файле Excel.
А как это сделать - в скриптовой задаче? Опять же, более сотни файлов? Я также слышал, что могу как-то изменить реестр. Хочу ли я возиться с этим? Что-нибудь из этого звучит практично?
Я не видел в Интернете ничего, что можно было бы сравнить с моей ситуацией, и я в замешательстве. Как это может быть? Я не могу быть единственным, кто сталкивается с такими проблемами усечения.
В любом случае, я ценю любую помощь.