Может ли SSIS поддерживать загрузку файлов с различной длиной столбцов в каждой строке? - PullRequest
2 голосов
/ 08 июля 2019

В настоящее время я получаю ежедневный файл размером около 750 тыс. Строк, каждая строка имеет трехзначный идентификатор в начале.

Для каждого идентификатора количество столбцов может изменяться, но оно зависит от идентификатора (например, SRH всегда будет иметь 6 столбцов, AAA всегда будет иметь 10 и т. Д.).

Я хотел бы иметь возможность автоматизировать этот файл в таблицу SQL через SSIS.

Это решение в настоящее время встроено в MSACCESS с использованием VBA, просто просматривая наборы записей с помощью оператора CASE, затем записывает запись в соответствующую таблицу.

Я читал о BULK INSERT, BCP (с форматным файлом) и Условном разделении в SSIS, однако я всегда застреваю при первом затруднении даже при загрузке файла в виде ошибок SSIS из-за переменных макетов столбцов.

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

AAA|20180910|POOL|OPER|X|C
SRH|TRANS|TAB|BARKING|FORM|C|1.026
BHP|1
*BPI|10|16|18|Z
BHP|2
*BPI|18|21|24|A

(* Я добавил *, чтобы показать, что это дочерние записи родительской записи, в этом случае BHP может иметь несколько записей BPI под ним)

Я хотел бы иметь возможность загружать файл TXT в промежуточную таблицу, а затем я могу написать TSQL для циклического прохождения записей и анализа их в соответствующих таблицах (AAA - tblAAA, SRH - tblSRH ...)

1 Ответ

0 голосов
/ 09 июля 2019

Я думаю, что вы должны читать каждую строку как один столбец типа DT_WSTR и length = 4000, тогда вам нужно реализовать ту же логику, написанную с использованием vba, в компоненте Script (VB.NET / C #), есть похожие посты, которые могут датьнекоторые идеи:

...