如何使用单个SSIS包读取不同格式的不同文件并将数据插入到不同的表中?

时间:2016-03-21 12:38:41

标签: ssis

我需要创建单个SSIS包来从不同格式的多个文件(列数,不同的分隔符,不同的列名)中读取数据并插入到不同的表中。

例如:我会收到

  

file1,file2 ... file10

每个都有不同的格式,我需要插入不同的表

  

Tabl1,表2,......表10.

所有这些操作都应该使用单个SSIS包动态完成。

1 个答案:

答案 0 :(得分:0)

一种方法是将关于每个入站文件的元数据存储在数据库表中,在包执行期间访问该元数据,然后使用基于表达式的优先约束来确定要使用哪个Dataflow(和相应的平面文件连接管理器)用于加载每种文件格式。enter image description here

1)使用SQL Script Task将文件元数据加载到system.object变量中(通过SQL Script Task的ResultSet属性设置)

2)使用Foreach循环容器(特别是" Foreach ADO枚举器")迭代元数据表,将关键元数据元素加载到包变量中(值索引,标题行数,分隔符,文件路径/名称等)

3)将一个表达式任务添加到Foreach容器中作为优先级实体(将表达式设置为始终计算为true的值,如" 1 == 1"就足够了 - 我们只需要这个任务作为foreach容器的入口点。)

4)为每种不同的文件格式添加数据流。每个数据流都将包含一个平面文件连接管理器,其表达式为"表达式"然后可以使用属性动态设置属性,例如文件名,路径,标题行数,分隔符等。

5)向数据流添加基于表达式的优先约束,以评估文件的元数据,并确定应将哪个DataFlow任务发送到处理中。