Использование SSIS для чтения плоских файлов с несколькими типами записей
Вопрос
Мы оцениваем SSIS, чтобы понять, будет ли он подходящим для нового проекта, который готовится к запуску.Один из процессов должен будет обработать плоский файл с разделителями записей.Файл будет содержать заказы.Имеется строка заголовка, строка адреса доставки (необязательно) и одна или несколько строк сведений.Поля каждой строки разделены, но имеют разный формат.
Я прочитал этот ответ:
Транзакционные данные SSIS (разные типы записей, один файл)
И я могу разделить данные с помощью задачи Условного разделения для получения нескольких выходных данных, но не уверен, как действовать дальше.У меня есть две проблемы, которые мне нужно решить:
Заголовок заказа должен быть вставлен первым, перед адресом и деталями, поскольку адрес и детали будут ссылаться на запись заказа, поэтому я думаю, что сначала мне нужно обработать этот вывод, но я не уверен, как в SSIS выполнить обработку этой ветви задачи условного разделения до того , как другие ветви.В идеале я хотел бы обработать заголовок заказа, а затем сохранить идентификатор заказа в пользовательской переменной, чтобы при обработке деталей я мог ссылаться на эту переменную.
В файле будет несколько порядков, поэтому его разделение является более сложным.
Я всегда мог бы написать приложение на C #, которое будет предварительно обрабатывать файл или считывать его в промежуточную таблицу, но я не уверен, что мне нравится такой подход.
Может ли кто-нибудь, кто прошел через этот процесс, поделиться некоторыми соображениями о том, как они справлялись с этим?
Спасибо,
Крис
Решение
После разделения поместите записи каждого типа в его собственную промежуточную таблицу - или в пункт назначения необработанных данных ssis, что быстрее и подходит для промежуточных шагов, подобных этому.Затем загрузите все заголовки в их конечную таблицу и продолжайте без ошибок ссылок.
Я предполагаю, что в подробных записях есть идентификатор заголовка?Это должно облегчить решение вашего 2-го вопроса.Если нет, дайте нам знать.