Разбор неструктурированного плоского файла в SSIS - PullRequest
0 голосов
/ 07 июня 2018

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

[column 0]!=""

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

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

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

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

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

Ошибка в задаче потока данных [Условное разделение [32]]: Выражение "[Column 0]! =" "" On "Conditional Split.Outputs [Case 1]" недопустимо.

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


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

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


КНОПКИ:

ОК

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

1 Ответ

0 голосов
/ 07 июня 2018

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

Типы данных "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. Создайте столбцы, указав ширину, и теперь ваш поток данных стал проще, и пакет будет работать быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...