Как импортировать файлы неделя за неделей, используя SSIS? - PullRequest
2 голосов
/ 20 мая 2019

Я хочу загружать файлы в базу данных сервера SQL еженедельно.Каждое имя файла содержит дату на нем.В настоящее время я использую Foreach Loop Container, чтобы получить имя файла и сохранить его в таблице.Таблица содержит 3 столбца FileName, Date и Week.После загрузки FileName с помощью задачи «Выполнение SQL» я извлекаю дату и неделю из столбца FileName и заполнить дату и неделю.Затем я использую задачу «Выполнение SQL», чтобы ВЫБРАТЬ всю таблицу дат ORDER BY Date и Week и сохранить ее в переменной объекта.Наконец, я использую Foreach Loop Container для загрузки реальных файлов в порядке дат, используя ADO Enumerator и переменную объекта.Это отлично работает.Тем не менее, я хочу загружать файлы на еженедельной основе.Для примера, все файлы, которые имеют 15-ю неделю в таблице, должны быть загружены первыми.Затем следует загрузить все файлы недели 16 и так далее.Причина, по которой я хочу загрузить это, заключается в том, что после загрузки одной недели файлов, которые я хочу обработать, используя некоторую хранимую процедуру.

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Я думаю, что проблему можно решить, сделав две правки:

Цикл в течение недели

  1. Добавление задачи «Выполнение SQL», которая извлекает отчетливые недели из таблицы
  2. Добавление контейнера цикла foreach в цикл в течение недель
  3. внутри цикла foreach добавьте задачу «Выполнение SQL», которая извлекает строки на основе текущей недели
  4. Использовать другой контейнер цикла foreach для зацикливания результата

Заказанные результаты

Вы можете просто добавить предложение ORDER BY внутри задачи «Выполнение SQL», чтобы получить упорядоченный набор результатов.

0 голосов
/ 20 мая 2019

Это ограничение перечислителей цикла ForEach - нет возможности загружать файлы отсортированным / упорядоченным образом. Если вы хотите загрузить файлы таким способом, то есть два способа сделать это:

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

Для второго варианта вам необходимо выполнить следующие шаги:

  1. Создайте перечислитель цикла ForEach File, просканируйте папку на наличие всех файлов и вставьте имена файлов в таблицу базы данных.
  2. Создайте задачу «Выполнение SQL», которая выберет все имена файлов, ORDERED BY по имени файла. Вы можете добавить ограничения в предложение WHERE для управления диапазоном дат файлов, которые вы хотите обработать.
  3. Загрузить результирующий набор в переменную типа Object
  4. Создание перечислителя цикла ForEach ADO для циклического просмотра каждого имени файла, хранящегося в объекте.
  5. Поместите поток данных в цикл и затем обработайте файлы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...