SSIS Foreach循环文件夹作为变量

时间:2011-03-29 00:21:25

标签: sql-server-2008 ssis foreach-loop-container

我需要将Foreach循环中的Folder设置为变量位置。我尝试将位置添加到我的包配置中,它的作用就像它有效,但是当我打开配置文件时,它不在那里。

我将它设置为Foreach File Enumerator,路径是硬编码的,并且检索完全限定的文件名。我的变量Mappings有一个变量CurrentFile,索引为0。

因此,我已将其更改为Foreach From Variable Enumerator,其SourceFiles变量为\ server \ path *。*。但现在它抱怨CurrentFile,分配的值类型与变量类型(字符串)不同。

我猜我需要以某种方式在集合选项卡上使用带有枚举器的表达式?怎么样?

  • 一般:Foreach循环容器
  • 收集:来自Varialbe枚举者的Foreach;变量是User :: SourcePath;表达式(未使用)
  • 变量映射:变量用户:: CurrentFile,索引0
  • 表达:(未使用)

错误:MyPackage上的0xC001F009:分配给变量“User :: CurrentFile”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,但Object类型的变量除外。 错误:Foreach循环容器中的0xC001C012:ForEach变量映射编号1到变量“User :: CurrentFile”无法应用。

1 个答案:

答案 0 :(得分:20)

一位同事向我展示了如何让它发挥作用。不要将其更改为“Foreach from Variable Enumerator”,但将其保留为“Foreach File Enumerator”。

  • 收集:Foreach文件枚举器;放入Enumerator配置中的文件夹和文件。在“表达式”下,将“目录”设置为指向目录的用户变量(它将优先于您输入的文件夹);将FileSpec设置为指向文件的用户变量(它将优先于您输入的文件)。
Directory @[User::SourcePath]  (value: \\server\directory)
FileSpec @[User::CopyFileName] (value: *.*)
  • 变量映射:变量用户::当前文件,索引0
  • 表达:(未使用)