Как сохранить "полностью определенное" и "только имя" имя файла в переменной SSIS

У меня есть пакет служб SSIS с контейнером цикла по каждому элементу, который загружает все файлы.txt в статическую папку. Я передаю полное имя файла в качестве переменной, которую я использую в строке подключения.

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

Есть ли способ передать как полное имя, так и имя файла только имя переменной в ssis?

1 ответ

Решение

Нет, вы можете выбрать одно: либо полностью определенное, либо только имя файла. Лично, если все, кроме хранимой процедуры, ожидает полностью определенное имя, я бы создал вторую переменную FileNameOnly и либо заполнить его с помощью выражения, как

RIGHT(@[User::CurrentFileName], FINDSTRING(REVERSE(@[User::CurrentFileName]), "\\", 1 )-1)

(предполагается, что вы сохранили значение в переменной с именем CurrentFileName)

Или вы можете использовать сценарий Task, чтобы присвоить значение FileNameOnly и использовать метод.NET System.IO.Path.GetFileName.

Вы можете добавить еще одну переменную @[User::Filename]а внутри контейнера цикла Foreach добавьте задачу Expression со следующим выражением:

@[User::Filename] = TOKEN(@[User::FilePath],"\\", TOKENCOUNT(@[User::FilePath],"\\"))
Другие вопросы по тегам