Диспетчер соединений с плоскими файлами возврат каретки / перевод строки - PullRequest
0 голосов
/ 28 декабря 2018

Я обновляю SQL Server 2008R2 до 2017 года и делаю то же самое с SSIS.Существует ряд импортов плоских файлов, которые выбирают файлы, в которые вставлен возврат каретки / перевод строки ({CR}{LF}) в столбец строки.

Менеджер соединений с плоскими файлами 2008R2 игнорирует встроенный {CR}{LF} s, которые находятся в строке, но менеджер соединений с плоскими файлами в 2017 году рассматривает каждый {CR}{LF} как новую строку.То же самое в обновленном диспетчере соединений или в новом, который я делаю с нуля.

В обеих версиях диспетчеры соединений имеют одинаковые спецификации:

General Tab

  Locale: English (United States)
  Unicode: No
  Code page: 1252 (ANSI-Latin I)
  Format: Delimited
  Text qualifier: <none>
  Header row delimiter: {CR}{LF}
  Header rows to skip: 0
  Column names in the first data row: Check

Columns Tab

  Row delimiter: {CR}{LF}
  Column delimiter: Vertical Bar{|}

Не особо сложныйТекстовый файл, с которым я тестирую:

row_id|row_data|empty_column|created_by|one_more_field{CR}{LF}
1|random test data||ebrandt|{CR}{LF}
2|Data field with a carriage return{CR}{LF}
and a line feed embedded in it.||ebrandt|

Я вставил в разделители строк только для того, чтобы показать, что они есть.

На вкладке Columns окно предварительного просмотра вBIDS 2008R2 показывает две строки:

2008R2_connectionmgr

Но в 2017 году один и тот же файл разбивается на три строки:

2017_connectionmgr

В этом проекте нет пропускной способности, чтобы переработать весь импорт файлов.

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

Редактировать: В ответ на удаленный комментарий я бы указывал квалификатор текста, если мог, но у файлов, которые я получаю, их нет.

1 Ответ

0 голосов
/ 28 декабря 2018

В диспетчере соединений с плоскими файлами необходимо установить для свойства AlwaysCheckForRowDelimiters значение False.

. После этого ваш файл будет проанализирован, как и раньше.

Это было изменение, сделанное в 2012 году, чтобы изменить поведение на следующее .

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

Подробнее см. по этой ссылке .

...