【问题标题】:SSIS import multiple flat files to multiple tablesSSIS 将多个平面文件导入多个表
【发布时间】:2013-04-21 19:55:59
【问题描述】:
我每天有大约 20 个 TXT 文件,它们的名称和结构不同。
Files Names --> Table Names
-----------------------------------------------------
Tbl-Sales-yymmdd-hhmmss.TXT --> Table-Sales
Tbl-Customers-yymmdd-hhmmss.TXT --> Table-Customers
我需要创建一个 SSIS 包来将这些 TXT 文件导入 SQL 表。我尝试了多个 Foreach 循环容器,但是一旦第一个容器完成,其余的将返回空枚举器并跳过里面的所有任务。任何帮助,将不胜感激。谢谢。
【问题讨论】:
标签:
sql-server-2008
import
ssis
【解决方案1】:
我假设您的 Table-Sales 和 Table-Customers 表具有不同的列集合。这意味着每个目标表至少必须有一个数据流任务:每个目标表都需要自己的一组列映射。
这样做的困难在于,随着源文件上的日期和时间戳发生变化,您可能不想更改每个平面文件连接以指向正确的源文本文件。
处理这种情况的最简单方法是将文件名标准化,在这个意义上:将Tbl-Sales-yymmdd-hhmmss.TXT 复制到另一个专用目录中名为Table-Sales.txt 的文件中,将Tbl-Customers-yymmdd-hhmmss.TXT 复制到同一目录中的Table-Customers.txt专用目录,并设置所有平面文件连接管理器(因为您可能需要每种源文件类型一个)以指向专用目录中的文件。然后,您将拥有一个不需要自定义编程或弄乱变量的 SSIS 包:只要文件在那里,它就会执行而无需进一步干预。
您可能可以使用 SSIS 将带时间戳的文件复制到正确的目标文件名,或者使用一些代码来完成,或者(可能)甚至使用老式的 .bat 文件。有很多方法。