Как обработать неровные правильные текстовые файлы со многими подавленными столбцами в SSIS или другом инструменте? - PullRequest
4 голосов
/ 05 ноября 2008

Параметр рваный правый плоский файл отлично подходит для одиночного конечного поля, оканчивающегося CRLF, но когда подавляется любое количество конечных полей, которые являются пустыми, и строка заканчивается досрочно с помощью CRLF, я не нашел альтернативы в SSIS, кроме прочитать несколько столбцов с помощью одного столбца «REMAINDER», а затем использовать преобразование «Производный столбец» с операциями SUBSTRING для извлечения «необязательных» столбцов один за другим.

Одна возможность, которая мне пришла в голову, заключается в том, если есть какой-либо способ пропустить линию через компонент «padder» в SSIS до того, как менеджер соединений получит его. Тогда вы сможете получить все преимущества использования диспетчера соединений для настройки длины входящего столбца. Я всегда мог создать внешнюю программу (или совершенно отдельный поток данных служб SSIS) для передачи файла, который будет заполнять каждую строку пробелами (и с рваной правой стороной) - просто добавляя одинаковое минимальное количество пробелов для учета всех подавленных полей в каждом будет достаточно), но это кажется довольно расточительным по отношению к дисковому пространству, а также требует, чтобы файл был прочитан (и записан) полностью еще раз.

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

Есть ли другие варианты?

Ответы [ 2 ]

2 голосов
/ 06 ноября 2008

Я думаю, что ваше предложенное решение звучит разумно. Дисковое пространство дешево. Вполне приемлемо иметь двухэтапный процесс, в котором вы очищаете форматирование перед импортом данных.

1 голос
/ 07 декабря 2010

Использование компонента сценария для разделения столбца в качестве источника данных.

...