2016-01-21 3 views
1

У меня есть большой текстовый файл с разделителями строк без текстовых спецификаторов, и похоже, что все, что выплевывает этот файл, случайно выплевывает ложные метки «LF» в последнем столбце каждые несколько сотен строк , Последний столбец - описательный столбец, и он не является текстовым, каким бы он ни был. файл выглядит примерно так:Несогласованные концы строк в SSIS Плоский импорт файлов

id|data|data|data|data|Description[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|Descr[LF] 
iption[LF] 
id|data|data|data|data|Description[LF] 
Id|data|data|data|data|Description[LF] 
id|data|data|data|data|Descripti[LF] 
on[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|Description[LF] 
id|data|data|data|data|D[LF] 
escription[LF] 

Я довольно новыми для SSIS и SQL в целом, Кто-нибудь есть какие-либо советы о том, как это исправить?

+0

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

+0

Альтернативой «вручную» является импорт файла в таблицу с одним достаточно большим полем VarChar (по одной записи на строку файла). Возможно, вы сможете скомпоновать его вместе в t-sql. – InbetweenWeekends

+0

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

ответ

0

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

Проверьте это site, чтобы узнать, соответствуют ли данные в ваших проблемных строках любым из этих кодировок. Если это так, то в конечном итоге у вас есть два варианта:

1) Создайте сложный и сложный ETL process, чтобы обнаружить и исправить данные файла перед его обработкой. Это нецелесообразно, так как это будет серьезной болью для создания и поддержания.

2) Попробуйте изменить способ создания этого файла. Большинство мастеров экспорта текста позволят вам размещать кавычки («) вокруг текстовых элементов, чтобы ваш процесс импорта мог быстро обнаружить что-то как текстовый блок, а не последовательность кодированных символов для интерпретации.

1

Я действительно нашел способ исправить его в Notepad ++, потому что я не знаю C#, и я не знаю SSIS достаточно хорошо.

Идентификатор был 8 цифр, а затем 7 пробелов. Это было абсолютно уникально для этого файла.

в Notepad ++ я использовал (Find Extended) для поиска и замены "\ п" (LF) ничего

тогда я использовал е место это выражение для находки:

(\d\d\d\d\d\d\d\d[[:blank:]][[:blank:]][[:blank:]][[:blank:]][[:blank:]][[:blank:]][[:blank:]]) 

, чтобы найти все 8 цифр номера с 7 конечными пробелами, так и для замены, используется следующим образом:

\r\n\1 

поставить [CR] [LF] перед теми, 8 цифр.

Вот и все! Но в любом случае. Мой босс связался с клиентом и просит лучшего файла. Теперь я получаю признание, и мы получаем правильные данные. Спасибо за совет!

+0

Хорошо, что это один раз, а не каждый день фид данных – BinaryPatrick

+0

Вот что я учу. Это ежемесячный фид. В следующий раз он будет исправлен. –

+0

В этом случае вы можете добавить обработку регекса в файл, но вам нужно будет загрузить его в виде одной большой строки, переопределить ее и затем прочитать, что один элемент в новую структуру , Я думаю, вы могли бы сделать это только в сыром SQL, так как куча вложенных операторов SELECT и замена строки. – BinaryPatrick

Смежные вопросы