2017-01-02 14 views
0

Я пытаюсь загрузить данные из плоского файла. Размер файла составляет около 2,5 ГБ, а количество строк близко к миллиарду. Я использую источник плоского файла внутри DFT. Несколько строк внутри файла не соответствуют шаблону столбца, например, есть дополнительный разделитель или текстовый классификатор как значение одного столбца. Я хочу пропустить эти строки и загрузить оставшиеся строки, которые имеют правильный формат. Я использую SSIS 2014. Плоский источник файла внутри DFT не работает. Я установил свойство alwaysCheckforrowdelimiter равным false, но все равно не работает. Поскольку файл слишком велик, открытие и изменение вручную невозможно. Незлая помощь.Пропустить строки ошибок из плоского файла в ssis

+0

Если это одноразовая я предлагаю вам использовать скрипт (VBScript, Powershell, что угодно), чтобы произвести поиск по файлу и предварительно очистить его. –

+0

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

+0

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

ответ

0

У меня такая же идея, как и Nick.McDermaid, но я могу помочь вам немного больше. Вы можете очистить свой файл с помощью регулярного выражения. (В сценарии)

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

Вот визуальный пример выполнен в Notepad ++

Notepad++ Example screenshot

Вот шаблон используется для моего примера:

^[A-Z]*;[A-Z]*;[A-Z]*;[A-Z]*$ 

И выборка данных:

AA;BB;CC;DD 
AA;BB;CC;DD 
AA;BB;CC;DD;EE 
AA;BB;CC;DD 
AA;BB;CC 
AA;BB;CC;DD 
AA;BB;CC;DD 

You можно попробовать в сети: https://regex101.com/r/PIYIcY/1

С уважением, Arnaud