3

我有一个 SSIS 包,它有一个 Foreach 循环容器,将所有 .txt 文件加载到一个静态文件夹中。我将完全限定的文件名作为我在连接字符串中使用的变量传递。

我现在只需要将文件名传递给一个变量以用于执行存储过程,问题是如果我将 Foreach 循环集合更改为只检索文件名,它会阻止其余部分工作。

有没有办法将完全限定文件名和仅名称文件名传递给 ssis 中的变量?

4

2 回答 2

6

不,您可以选择一个:完全限定或仅文件名。就个人而言,如果除存储过程之外的所有内容都需要完全限定名称,我将创建第二个变量FileNameOnly并使用如下表达式填充它

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

(这假设您已将值存储在名为 的变量中CurrentFileName

或者,您可以使用脚本 Task 将值分配给 FileNameOnly 并利用 .NET System.IO.Path.GetFileName方法。

于 2015-01-30T18:19:45.633 回答
1

您可以添加另一个变量@[User::Filename],并在Foreach 循环容器内添加具有以下表达式的表达式任务:

@[User::Filename] = TOKEN(@[User::FilePath],"\\", TOKENCOUNT(@[User::FilePath],"\\"))
于 2019-05-08T15:17:41.140 回答