отформатировать большой входной плоский файл в несколько меньших выходных файлов с определенным количеством - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть схема плоского файла позиционного ввода следующего вида.

<Employees>
    <Employee>
        <Data>  

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

У меня есть следующие условия -

  1. Если в Data содержится 500 записей, в выходном местоположении должно быть 5 файлов по 100 записей.
  2. Если в Data содержится 522 записи, в месте вывода должно быть 6 файлов (5 * 100, 1 * 22 записей).

Я попробовал несколько предложений из Интернета, таких как

  1. Установка «Разрешить разрыв сообщения при корне Infix» на «Да» и установка maxoccurs на «100».Это не похоже на работу. Как дебатировать (разделять) плоский файл, используя схему плоских файлов?

  2. Я также работаю над настраиваемым компонентом конвейера приема, предложенным в Split FlatФайлы в меньшие файлы (по числу строк), используя Custom Pipeline , но я довольно новичок в этом, так что это занимает некоторое время.

Пожалуйста, дайте мне знать, если есть какой-либо более простой способ сделать это, без реализации пользовательского компонента конвейера.

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

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

У вас есть два варианта:

  1. Импорт плоского файла в таблицу SQL с помощью служб SSIS.
  2. Анализ входного файла как одного сообщения, затем сопоставление с составной операцией для вставкизаписи в таблицу SQL.Вы также можете использовать в Вставить диаграмму обновлений.

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

0 голосов
/ 04 февраля 2019

Простой способ создания плоской файловой структуры без написания пользовательского кода C # - просто использовать таблицу базы данных.Просто вставьте весь файл как записи в таблицу, а затем укажите место получения, которое опрашивает записи в нужном вам размере пакета.

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

...