2017-04-14 67 views
2

我在文件夹中有多个平面文件(.csv)作为我的源文件。每个文件具有不同数量的列,这些列可能与其他文件相交也可能不相交。但是,任何源文件中的所有列都始终存在于包含所有这些列的超集的目标表中。数据流SSIS-公共目标表,不同结构的平面文件

我的要求是遍历每个这些文件,并动态地将该文件中可用的列映射到目标表(csv文件的表头名称匹配表中的列名称)。

Structure of File 1: 
id, name, age, email 

Structure of File 2: 
id, name, age, address, country 

Structure of File 3: 
id, name, age, address 

Structure of Destination Table: 
id, name, age, address, country, email 

我想用数据填充所有列的表什么是可用的和NULL什么不是为每个记录。我如何使用SSIS实现这一点?

+1

最无痛的方法是从三个文件中插入的所有记录到临时/临时表和执行一个存储过程,用你的逻辑填充表格。你可以把你所有的组合逻辑在SSIS本身,但是这更麻烦的... – Siyual

回答

-1

Flat File Source不支持动态文件格式,您必须使用多个来源来加载这些文件。

+0

这是不对的,你可以做忽略'平面文件连接manager'(读行一列)列和使用derrived其拆分列或脚本 – Yahfoufi

0

你可以通过添加一个Flat File Connection Manager数据类型DT_WSTR4000长度只添加一列这样做(假设它的名字是Column0

  • dataflow taskFlat File Source
  • 后添加 Script Component
  • 在标记Column0作为输入列和添加6输出列(id, name, age, address, country, email)
  • Input0_ProcessInputRow方法中拆分此列并将值分配给输出列。 (你可以写你想要的逻辑)你可以阅读以下问题的答案得到一个例子:Reading CSV file some missing columns