Как заставить SSIS выбрать определенные файлы в каталоге и назначить имя переменным (File System Task) - PullRequest
1 голос
/ 15 октября 2019

У меня есть следующий сценарий:

У меня есть удаленный сервер, который каждую неделю загружается с 2 файлами, эти файлы имеют следующий формат имени:

" FINAL_NAME 06Apr16.txt "и" FINAL_NAME_F1 06Apr16.txt "

Часть, выделенная жирным шрифтом, фиксируется каждый раз, но дата меняется, теперь мне нужно выбрать, скопировать в другой каталог и переименоватьэти файлы. но я не уверен, как выбрать имена файлов для переменных, чтобы работать с ними, так как мне нужно указать разные имена для каждого файла.

Как я могу продолжить? Я почти уверен, что это нужно сделать с помощью именования переменной с помощью выражения, но я не знаю, как это сделать.

Я думаю, что мне нужна какая-то функция для вычисления оставшейся части имени файла, я думаю, что, возможно, какой-то подход может заключаться в том, чтобы сначала переименовать часть «FINAL_NAME_F1», а затем переименовать «FINAL_NAME», так как некоторые символы подстановки выберут оба, если этого не сделать таким образом?

Ура.

1 Ответ

3 голосов
/ 15 октября 2019

Вы можете вычислить дату, но зачем проходить эту сложность?

Контейнер циклов Foreach (файл), FELC, справится с этим просто отлично. Добавьте два из них в ваш поток управления.

Первый будет использовать маску файла FINAL_NAME_F1*.txt. Внутри этого FELC используйте задачу «Файловая система», чтобы скопировать / переместить / переименовать файл в новое место.

Первый FELC запустится, найдите целевой файл и переместите его. Затем он найдет следующий файл, не найдет его и перейдет к следующей задаче.

Создайте второй FELC, но этот будет работать на FINAL_NAME*.txt Крайне важно, чтобы первый FELC выполнялся первым в качестве маски этого файлабудет соответствовать как FINAL_NAME_f1-2019-01-01.txt, так и FINAL_NAME-2019-01-01.txt. Заказывая наши операции как таковые, мы можем уменьшить сложность требуемой логики.

Пример ответа с FELC, чтобы показать, где расположить различные биты

...