Разбор неструктурированного плоского файла в SSIS

У меня проблема с анализом неструктурированного текстового файла. Я пытался загрузить все в один столбец с типом данных DT_STR, но он выдает ошибку, так как в моем файле есть специальные символы, такие как '='. Я пытался с типом данных DT_TEXT, он работал хорошо. Но я не могу выполнять какие-либо операции над столбцом. Мне нужно удалить пустые строки в этом столбце, что можно сделать с помощью "условного разбиения". Но условие:

[column 0]!=""

не работает и выдает следующую ошибку:

НАЗВАНИЕ: Microsoft Visual Studio

Ошибка в задаче потока данных [Условное разделение [32]]: типы данных "DT_TEXT" и "DT_WSTR" несовместимы для двоичного оператора "!=". Типы операндов не могут быть неявно преобразованы в совместимые типы для операции. Чтобы выполнить эту операцию, один или оба операнда должны быть явно приведены с помощью оператора приведения.

Ошибка в задаче потока данных [Условное разделение [32]]: Попытка установить тип результата двоичной операции "[Столбец 0]!= """ Не удалась с кодом ошибки 0xC0047080.

Ошибка в задаче потока данных [Условное разбиение [32]]: Ошибка вычисления выражения "[Столбец 0]!= """ С кодом ошибки 0xC0047084. Выражение может иметь ошибки, такие как деление на ноль, которые не могут быть обнаружены во время разбора, или может быть ошибка нехватки памяти.

Ошибка в задаче потока данных [Условное разделение [32]]: выражение "[Столбец 0]! =" "В" Условном разделении. Выходы [Случай 1]"недопустимо.

Ошибка в задаче потока данных [Условное разделение [32]]: не удалось задать свойство "Выражение" для "Условное разделение. Выходы [Случай 1]".


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Исключение из HRESULT: 0xC0204006 (Microsoft.SqlServer.DTSPipelineWrap)


КНОПКИ:

Хорошо

Я делал синтаксический анализ с C# скрипт ранее. Но теперь мне нужно избегать кодирования. Любые идеи о том, как разобрать этот файл, приветствуются. Спасибо

1 ответ

Давайте разберем это

Типы данных "DT_TEXT" и "DT_WSTR" несовместимы для бинарного оператора "!="

У вас есть выражение [column 0]!="" пустая строка "" DT_WSTR и [column 0] является типом данных DT_TEXT. Как указано в сообщении об ошибке, вы не можете проверить наличие неравных условий между этими типами.

Я бы посмотрел либо на преобразование столбца 0 в DT_WSTR, либо просто на проверку длины. LEN([column 0]) > 0

Способ SSIS

Большая проблема в том, что ваш файл не является "неструктурированным текстовым файлом". Это очень структурировано. Заголовки столбцов находятся в строке 3 (подсчет на основе 1), а данные начинаются с 5. Отсюда сами данные выглядят с фиксированной шириной.

Как вы справляетесь с этим в SSIS? Создайте диспетчер соединений с плоскими файлами типа Ragged Right. Укажите, что столбцов заголовков нет, и пропустите первые 4 строки / данные начинаются со строки 5. Создайте столбцы, указав ширину, и теперь ваш поток данных стал проще, и пакет будет работать быстрее.

Другие вопросы по тегам