如何在 SSIS 变量中存储 'fully qualified' 和 'name only' 文件名
How to store 'fully qualified' and 'name only' file name in SSIS variable
我有一个 SSIS 包,它有一个 Foreach 循环容器,用于加载静态文件夹中的所有 .txt 文件。我将完全限定的文件名作为我在连接字符串中使用的变量传递。
我现在只需要将文件名传递给用于执行存储过程的变量,问题是如果我将 Foreach 循环集合更改为只检索文件名,它会阻止其余部分工作。
有没有办法将完全限定文件名和仅命名文件名都传递给 ssis 中的变量?
不,您可以选择一个:完全限定或仅文件名。就个人而言,如果除了存储过程之外的所有内容都需要完全限定名称,我会创建第二个变量 FileNameOnly
并用
这样的表达式填充它
RIGHT(@[User::CurrentFileName], FINDSTRING(REVERSE(@[User::CurrentFileName]), "\", 1 )-1)
(假设您已将该值存储在名为 CurrentFileName
的变量中)
或者您可以使用脚本任务将值分配给 FileNameOnly 并利用 .NET System.IO.Path.GetFileName 方法。
您可以添加另一个变量 @[User::Filename]
并在 Foreach 循环容器 中添加一个 Expression Task,其表达式如下:
@[User::Filename] = TOKEN(@[User::FilePath],"\", TOKENCOUNT(@[User::FilePath],"\"))
我有一个 SSIS 包,它有一个 Foreach 循环容器,用于加载静态文件夹中的所有 .txt 文件。我将完全限定的文件名作为我在连接字符串中使用的变量传递。
我现在只需要将文件名传递给用于执行存储过程的变量,问题是如果我将 Foreach 循环集合更改为只检索文件名,它会阻止其余部分工作。
有没有办法将完全限定文件名和仅命名文件名都传递给 ssis 中的变量?
不,您可以选择一个:完全限定或仅文件名。就个人而言,如果除了存储过程之外的所有内容都需要完全限定名称,我会创建第二个变量 FileNameOnly
并用
RIGHT(@[User::CurrentFileName], FINDSTRING(REVERSE(@[User::CurrentFileName]), "\", 1 )-1)
(假设您已将该值存储在名为 CurrentFileName
的变量中)
或者您可以使用脚本任务将值分配给 FileNameOnly 并利用 .NET System.IO.Path.GetFileName 方法。
您可以添加另一个变量 @[User::Filename]
并在 Foreach 循环容器 中添加一个 Expression Task,其表达式如下:
@[User::Filename] = TOKEN(@[User::FilePath],"\", TOKENCOUNT(@[User::FilePath],"\"))