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

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

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

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


person chris1982    schedule 30.01.2015    source источник


Ответы (2)


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

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

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

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

person billinkc    schedule 30.01.2015
comment
Спасибо, у меня был аналогичный подход к этому. Поскольку расположение папки статично, я создал вторую переменную, содержащую путь, а затем соединил ее, имя файла и тип файла вместе. - person chris1982; 01.02.2015

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

@[User::Filename] = TOKEN(@[User::FilePath],"\\", TOKENCOUNT(@[User::FilePath],"\\"))
person Hadi    schedule 08.05.2019