SSIS将多个平面文件导入多个表

时间:2013-04-27 20:58:56

标签: sql-server-2008 import ssis

我每天大约有20个TXT文件,它们的名称和结构不同。

Files Names  -->  Table Names
-----------------------------------------------------
Tbl-Sales-yymmdd-hhmmss.TXT  -->  Table-Sales   
Tbl-Customers-yymmdd-hhmmss.TXT  -->  Table-Customers

我需要创建一个SSIS包来将这些TXT文件导入到SQL表中。我尝试了多个Foreach循环容器,但是第一个容器完成后,其余的返回空枚举器并跳过里面的所有任务。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

我假设您的Table-SalesTable-Customers表具有不同的列集合。这意味着每个目标表必须至少有一个数据流任务:每个目标表都需要自己的一组列映射。

这样做的困难在于,随着源文件的日期和时间戳发生变化,您可能不希望必须更改每个平面文件连接以指向正确的源文本文件。

处理这种情况的最简单方法是标准化您的文件名,在这个意义上:将Tbl-Sales-yymmdd-hhmmss.TXT复制到另一个专用目录Table-Sales.txt中名为Tbl-Customers-yymmdd-hhmmss.TXT的文件中Table-Customers.txt位于同一个专用目录中,并设置所有平面文件连接管理器(因为每个源文件类型可能需要一个)以指向专用目录中的文件。然后你将有一个SSIS包,不需要自定义编程或搞乱变量:只要文件在那里,它将执行而无需进一步干预。

您可以使用SSIS将带时间戳的文件复制到正确的目标文件名,或者使用一些代码或(可能)使用旧式.bat文件。有很多方法。