Динамическое имя файла и путь контейнера контейнера SSIS Foreach, затем распакуйте файлы
У меня есть папка с несколькими файлами с именем
P04_20140326_1234.zip
P04_20130324_58714.zip
P04_20130808_jurhet.zip
P04_20130815_85893.zip
etc
Название в формате P04_systemdate_*. Zip.
Я хочу выбрать папку с именем currentdate и распаковать ее в первую очередь и загрузить данные из извлеченного файла в table.eg: файл с именем A.txt попадает в таблицу A, файл с именем B попадает в таблицу B и так далее...
1 ответ
Я полагаю, вы уже сделали следующее:
- Добавить
Data Flow
- Внутри потока данных добавьте
flat file source
, а такжеOle_DB destination
- Настройте
flat file source
указать на один из ваших файлов и соединить все соответствующие столбцы, чтобы данные передавались из файла в базу данных.
Если все это уже работает, то давайте сделаем цикл For-Each
- Создайте переменную (по умолчанию для корневого уровня пакета) и назовите ее
CsvFileName
типа строки - Добавить
ForEach loop
(не цикл For) - Изменить тип цикла, чтобы быть
Foreach File Enumerator
- Установите путь к папке и найдите *.csv
- В разделе "Сопоставление переменных" добавьте переменную "User::CsvFileName" и установите для индекса значение 0 - это означает, что все имена файлов, возвращаемые из цикла Foreach, будут отображаться в переменной.
- В Диспетчере подключений (внизу) щелкните правой кнопкой мыши на
FlatFileSource
и выберите свойства - Установить
DelayValidation
в "Истину" - Нажмите на выражения, а затем нажмите на многоточие
- Установить
ConnectionString
свойство использовать переменную "CsvFileName"
Запустить его. Это должно загрузить все файлы. Теперь, если вы просто хотите ограничить это датой, вот что вы делаете:
- Создайте переменную с именем "FilterDate"
- Установите значение на любую дату, которую вы хотите установить (например, 20140322)
- В цикле ForEach перейдите в "Коллекции", затем нажмите "Выражения", затем нажмите многоточие.
- Установите для свойства FileSpec значение
"*" + @[User::FilterDate] + "*.csv"
Теперь он будет фильтровать только те файлы, которые вы хотите.