Задать несколько разделителей строк в соединении с плоским файлом - PullRequest
0 голосов
/ 01 ноября 2011

Мы можем установить разделитель строк для подключения к плоскому файлу в SSIS. Но вопрос в том, как установить несколько разделителей строк для подключения к плоскому файлу , чтобы не , используя Script Component дляэто?

например для текстового файла, содержащего эту строку:

Быстрая коричневая лиса, перепрыгнувшая через ленивых собак.

Я хочуесть две строки после использования ',' и '.' для разделителя строк:

Быстрая коричневая лиса

перепрыгнула черезленивые собаки

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

Мне не хватило места в поле для комментариев, или я бы оставил это там.Это не ответ, так как он не работает, жаль.

НИКОГДА НЕ ПРЯМО РЕДАКТИРУЙТЕ XML ПАКЕТА SSIS

Если, конечно, он не находится под контролем версий и откатится, если вы его уничтожите.

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

Я наблюдал следующие свойства:

  • HeaderRowDelimiter
  • RowDelimiter
  • ColumnDelimiter

Все они были установлены_x000D__x000A_ для исходного диспетчера подключений.0D0A - это CR / LF в шестнадцатеричном формате, поэтому я попытался _x003B__x000D__x000A_ для моего HeaderRowDelimiter.Я открыл пакет и хаззу, он показывал {;} {CR} {LF} на вкладке Общие.

Я применил то же самое к другим свойствам, и все выглядело многообещающе.Я создал поток данных, использовал новый диспетчер соединений, и он работает, но вместо того, чтобы рассматривать это как ИЛИ, это И, поэтому у меня был только 1 ряд потока данных по конвейеру.Я подтвердил поведение AND, добавив в первую строку точку с запятой и выполнив предварительный просмотр.Затем он показал 2 строки.

Если бы это сработало, для достижения изменчивости вы могли бы использовать выражения в диспетчере соединений для установки вышеуказанных свойств ...

После быстрого теста кажется, что ямне все еще нужно поработать с XML, чтобы заставить CR / LF "взять".Вставка в шестнадцатеричном коде не отменяется в XML в диспетчере соединений.Вы можете создать выражение для переменной и затем вставить LF для вставки, но я не мог понять, как заставить CR отображаться.Возможно, вставьте это из другого документа.

В любом случае, оставив это здесь, не в качестве ответа на проблему, но чтобы дать рекомендации о том, что не работает.Возможно, это вызовет идею у будущего читателя.

0 голосов
/ 11 марта 2019

Вы можете напрямую указать разделители в поле напрямую, вместо того, чтобы выбирать из выпадающего списка и сохранять его. В моем случае я использовал "$ # |" в текстовом поле, и он работал нормально для меня.

0 голосов
/ 06 ноября 2011

Короткий ответ: у стандартного диспетчера соединений с плоскими файлами такой возможности нет.

Откровенно говоря, у меня возникают проблемы с представлением бизнес-ситуации, когда кто-то отправляет мне данные в виде плоского файла с несовместимыми разделителями строк. Но если бы я столкнулся с такой ситуацией, я бы использовал компонент сценария в соответствии с ответом @ billinkc на ваш предыдущий вопрос Многострочный разделитель .

...