Динамическое имя файла и путь контейнера контейнера 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 ответ

Я полагаю, вы уже сделали следующее:

  1. Добавить Data Flow
  2. Внутри потока данных добавьте flat file source, а также Ole_DB destination
  3. Настройте flat file source указать на один из ваших файлов и соединить все соответствующие столбцы, чтобы данные передавались из файла в базу данных.

Если все это уже работает, то давайте сделаем цикл For-Each

  1. Создайте переменную (по умолчанию для корневого уровня пакета) и назовите ее CsvFileName типа строки
  2. Добавить ForEach loop (не цикл For)
  3. Изменить тип цикла, чтобы быть Foreach File Enumerator
  4. Установите путь к папке и найдите *.csv
  5. В разделе "Сопоставление переменных" добавьте переменную "User::CsvFileName" и установите для индекса значение 0 - это означает, что все имена файлов, возвращаемые из цикла Foreach, будут отображаться в переменной.
  6. В Диспетчере подключений (внизу) щелкните правой кнопкой мыши на FlatFileSourceи выберите свойства
  7. Установить DelayValidation в "Истину"
  8. Нажмите на выражения, а затем нажмите на многоточие
  9. Установить ConnectionString свойство использовать переменную "CsvFileName"

Запустить его. Это должно загрузить все файлы. Теперь, если вы просто хотите ограничить это датой, вот что вы делаете:

  1. Создайте переменную с именем "FilterDate"
  2. Установите значение на любую дату, которую вы хотите установить (например, 20140322)
  3. В цикле ForEach перейдите в "Коллекции", затем нажмите "Выражения", затем нажмите многоточие.
  4. Установите для свойства FileSpec значение "*" + @[User::FilterDate] + "*.csv"

Теперь он будет фильтровать только те файлы, которые вы хотите.

Другие вопросы по тегам