понедельник, 20 июня 2016 г.

Импорт файлов в SQL Server Integration Packages

Импорт файлов в SQL Server Integration Packages





В прошлом посте мы научились применять условное форматирование к отчёту в SSRS.

Этот пост будет из совершенно другой области - мы научимся полезному приёму для массовой обработки файлов в SSIS: поиску файлов по маске в названии (регулярному выражению).

     Задача импорта файла по маске


    Задача массовой обработки файлов по маске возникает в ситуации, когда в директории находятся разнородные файлы, а обработать в пакете Integration Services нужно какое-то их подмножество - например, только файлы ".xlsx", или файлы, название которых начинается с "log_".

    Элемент "For each"

    Для выделения подмножества файлов по маске нам потребуется элемент "Foreach loop container" на вкладке "SSIS Toolbox".


    В настройках элемента указываем директорию, где хранятся файлы ("Directory") и задаём маску файла (параметр "File Spec").



    Буферная переменная


    На вкладке "Variable Mappings" укажем название буферной переменной - в неё будут сохранятся имена файлов, которые попали под условие, заданной маской. 



    Именно через буферную переменную имя файла передаётся во внутренние объекты контейнера - в нашем случае это процедура копирования файлов.

    Для копирования выбранных файлов воспользуемся элементом "FileSystem Task"



    Тут нам и пригодится буферная переменная - в ней хранится полный путь к текущему файлу из коллекции - остаётся указать только путь назначения и выбранный файл будет скопирован.

    Процедура копирования будет проведена для всей файлов, попавших в коллекцию (которая задаётся маской).
    Внутри контейнера можно производить любые другие процедуры с файлами - переименование, загрузку во внешние таблицы БД и т.д.

    Комментариев нет:

    Отправить комментарий