如何使用ssis中的每个循环容器获取文件夹中的文件数

How to get the count of files in a folder using for each loop container in ssis

我在一个文件夹中有多个文件,这些文件由 for each 循环容器一个接一个地处理,之后数据存储在 SQL 服务器 table 中。

我需要存储循环容器正在处理的一系列文件。

假设有 5 个文件被顺序处理:

A, B, C, D, E

所以table应该有这样的数据-

Data of A, 1
Data of B, 2
Data of C, 3

等等

不使用脚本任务可以吗?

按照以下步骤操作:

  1. 创建 Foreach 循环容器。

    一个。 Right-click 并编辑容器。

    b。在集合选项卡上,指定文件夹和文件掩码。将 Retroeve 文件名设置为 'Fully qualified'.

    c。在 Variable Mappings 选项卡上,单击一个空的 Variable 单元格和 select 。在“添加变量”对话框中,指定一个变量名称,例如“Filename”;按确定。此变量将映射到索引 0(即完全限定文件名)。

  1. 创建一个新的平面文件连接。

    一个。在“连接管理器”区域(在主设计器窗格下),right-click 和 select 新建平面文件连接。

    b。在“平面文件连接管理器编辑器”对话框中,指定连接管理器名称,例如“数据文件”。单击浏览并 select 您的任何一个数据文件。根据需要配置文件格式(分隔符、列、文本限定符等)。按确定。

    c。 Select 新的 数据文件 连接管理器。在 Properties window(在右侧,通常在 Solution Explorer 下)中,找到 Expressions 项。单击 [...] 显示 属性 表达式编辑器对话框。

    d。在 属性 表达式编辑器对话框中,将 属性 单元格设置为 'ConnectionString' 并将表达式设置为 @[User::Filename] (其中 Filename 是名称您之前创建的变量。按确定。

  1. 将数据流任务添加到 Foreach 循环容器。

  2. Right-click 和编辑数据流任务。在数据流视图中,添加平面文件源和 OLE DB 目标(或根据需要添加其他目标)。 Right-click 并编辑每个源和目标,并根据需要进行配置。