SSIS 2008 - цикл ForEach для просмотра определенной группы / списка файлов
Я искал в Интернете, что, как я думал, было бы прямым вопросом, чтобы ответить. Надеюсь, вы, ребята, можете помочь?
Я использую для каждого цикла, чтобы искать конкретные файлы и перемещать их с задачей файловой системы в другую папку.
Скажем, у меня есть 10 CSV-файлов. называется в списке от А до Я
Я только хочу переместить a,e и j, но, похоже, не могу заставить foreachloop искать эту группу.
В текстовом поле "Перечислитель файлов" я попытался вставить 3 имени файла, разделенных различными разделителями, но SSIS считает, что все это один конкретный файл, и ни один из 3 не перемещается.
Может кто-нибудь посоветовать, как это можно сделать? Просто чтобы подтвердить, я не использую подстановочную логику, просто группу конкретных имен файлов - аналогично функции IN запроса SQL
заранее спасибо
1 ответ
Поскольку OP не может продолжить только мой комментарий, я объясню немного подробнее -
- Используйте
EXECUTE SQL TASK
для выгрузки имен файлов, необходимых в объект SSIS (для этого вы можете использовать хранимую процедуру или запрос SQL). Создайте переменную типа объекта на вкладке переменных, измените вывод вEXECUTE SQL TASK
вFull Result Set
и сопоставьте результат с объектом, который вы только что создали. Теперь этот объект содержит список файлов, через которые вы должны пройти. - Теперь перетащите контейнер ForEach из панели инструментов служб SSIS. Это должно быть настроено как
ForEach ADO Enumerator
и сопоставить объект с ним. Создайте еще одну переменную типа string, которая будет содержать имена файлов после каждой итерации контейнера ForEach. Карта это также вVariables
вкладка контейнера ForEach. - Теперь разместите
File System Task
который вы будете использовать для перемещения этих файлов в цикл ForEach. Используйте переменную имя-файла, которую вы создали, чтобы переместить только необходимые файлы.
Теперь, если вы не уверены, какой запрос SQL использовать для вашего случая на шаге 1, чтобы получить 3 имени файла -
SELECT 'A.csv'
UNION
SELECT 'E.csv'
UNION
SELECT 'J.csv'