SSIS - Назначение классификатора текста - PullRequest
0 голосов
/ 14 февраля 2019

Какова цель добавления текстового квалификатора к выводу плоского текстового файла служб SSIS?

Я извлекаю данные из базы данных SQL, в которой есть кавычки / запятые / каналы / и многие другие распространенные разделители в данных.

Экстремальный пример точки данных в столбце:

"Johnson"|Smith,Jones

Я настроил экспорт как разделитель-запятую, с двойным кавычком "квалификатор текста. Я предполагал, что он будет экспортировать данныеПримерно так и получилось:

,""Johnson"|Smith,Jones",

Сейчас я тестирую повторный импорт данных обратно, разделенных запятыми, с двойным текстовым квалификатором в кавычках. Я получаю сообщения о том, что SSIS не может найтиразделитель. Я думал, что он распознает запятую комбинации и двойные кавычки, по сути, как более сложный разделитель.

Если добавление текстового разделителя к выводу не поможет с проблемой наличия символов вфактические данные, что они делают?

Предполагая, что лицо, получающее данные, может использовать инструмент, такой как Excel, для обработки данных, который, кажется, не в состоянии обрабатывать сложный многосимвольный разделитель, такой как | ",лучший способ справиться с этим, удалив наиболее распространенный разделитель из моих данных и используя его в качестве разделителя?Вероятно, труба в моем случае, а не запятая.

1 Ответ

0 голосов
/ 14 февраля 2019

Текстовый квалификатор используется в том случае, если в ячейке строки содержатся разделители.Как правило, квалификатор текста представляет собой двойную кавычку.Если ячейка содержит разделитель, а текстовый квалификатор не используется, то данные, которые появляются после разделителя, попадут в следующий столбец.Оттуда строка данных может взорваться, и после этого ни один из столбцов не выстроится в линию.Это может быть настоящий беспорядок.

Кроме того, вы не увидите текстовый спецификатор в приложениях, таких как Excel.Однако, если вы откроете файл в Notepad ++, вы увидите текстовые квалификаторы.Может быть много данных (например, текстовые квалификаторы, символы новой строки, разделители столбцов и т. Д.), Которые содержатся в файле, но не отображаются в определенных приложениях.Эти данные обычно используются для определения структуры данных, а не фактических данных.

Для вашей задачи вам потребуется удалить двойные кавычки из исходных данных или использовать другой текстовый классификатор.Вы можете использовать одинарную кавычку, но что, если у вас есть данные, подобные данным Джонса?Идея заключается в том, что классификатор текста должен быть уникальным при определении структуры данных, что, как я понимаю, означает, что у вас не может быть текстового спецификатора, который фактически является частью данных (см. Примечание от Microsoft ниже - выделение шахты ).

По Microsoft:

Укажите символ квалификатора текста.Каждый столбец можно настроить для распознавания текстового квалификатора.

Использование символа квалификатора для встраивания символа квалификатора в квалифицированную строку поддерживается диспетчером соединений с плоскими файлами. Двойной экземпляр текстового квалификатора интерпретируется как литерал, единственный экземпляр этой строки.Например, если квалификатор текста представляет собой одинарную кавычку, а входные данные - «abc», «def», «g'hi», выходные данные - это abc, def, g'hi.Однако экземпляр квалификатора, встроенного в квалифицированную строку, приводит к сбою источника плоских файлов с ошибкой DTS_E_PRIMEOUTPUTFAILED.


Ссылки

...