使用SSIS从不同的文件夹结构插入.DBF文件及其各自的FilePath?

时间:2015-12-26 13:11:53

标签: sql sql-server ssis sql-server-2012 ssis-2012

正在创建SSIS包,请执行以下操作,到目前为止,我的SSIS包适用于从“.DBF”文件中仅从一个文件夹位置插入记录(使用数据流任务到控制流和OLE DB源/读取.DBF文件并将其插入的目标。但是,我无法弄清楚如何使它适用于20个站点,例如:我有20个'.DBF'文件存储在以下结构中:

1. E:\DBF Files\Site1\Data\records.DBF
2. E:\DBF Files\Site2\Data\records.DBF
3. E:\DBF Files\Site3\Data\records.DBF
4. E:\DBF Files\Site4\Data\records.DBF

依此类推至Site20(此处文件名保持不变,但内容因网站而异)。

我的SQL Server中有'records.dbf'文件的表格,结构如下:

记录表:

Product_Name          Price          FilePath          FileName
---------------------------------------------------------------

现在在这里,如何处理来自不同站点的这些文件存储在我的记录sql表中,并使用它分别使用SSIS?

P.S文件名将始终保持不变,路径将更改为“Like Site 1”

1 个答案:

答案 0 :(得分:0)

为SSIS工具箱抓取 For Each Loop容器,然后将其拖到Control Flow设计器上。

双击 For Each container 以显示编辑器,单击左侧菜单中的Collection选项卡

enter image description here

枚举器设置为 Foreach项目枚举器,然后点击右下角的按钮。

enter image description here

点击添加按钮,然后选择默认值列0 字符串。单击“确定”返回上一个对话框。在新的第0列列中,每行添加一个文件夹路径。

enter image description here

接下来,点击左侧菜单中的变量映射标签,在变量列的下拉菜单中选择新变量 。再次使用默认值,除了在我的示例中我称为dbf_path的名称。

enter image description here

接下来,点击“确定”完成 For Each 。现在对我来说很困难,因为我不知道你目前正在为一个文件工作的任务。无论您使用什么工作,请使用鼠标选择它,然后将其拖放到 For Each container 中。

对于需要使用文件路径的每个任务或任务,请执行以下操作: 双击它进行编辑,在左侧菜单中选择“表达式”,然后单击“表达式”,再单击省略号。

enter image description here

属性表达式编辑器中的属性下拉列表中,您需要找到保存此任务的文件路径的属性。这些名称并不总是很明显,可以在不同的任务中被称为不同的东西。在我的例子中,我使用文件系统任务,我认为是源属性。

enter image description here

单击“表达式”列中的省略号,然后添加由路径变量组成的表达式,该变量连接包含文件名称的字符串。需要注意的一点是反斜杠具有特殊含义,因此如果您的字符串包含任何字符串,则必须使用第二个反斜杠进行转义。

enter image description here

现在,当您运行程序包时, For Each 将循环遍历您定义的每个路径,并将其存储在您将引用的变量中。