Как сохранить "полностью определенное" и "только имя" имя файла в переменной 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],"\\"))