使用SSIS将多个不同的Excel表格转换为SQL Server 2008的最佳方法

时间:2012-04-20 06:41:49

标签: sql ssis etl

我已经看到很多关于如何使用Foreach循环容器枚举Excel工作簿或工作表的示例,假设所有源文件的数据结构相同且数据将转到单个目的地表。

处理以下场景的最佳方法是什么: - 单个Excel工作簿,包含10 - 20张或10 - 20个Excel工作簿和1个工作表。 - 每个工作簿/工作表都有不同的架构 - 每个源表都有1:1匹配的目标表。 - 标准清理:将创建工作簿并将其放置在“加载”文件夹中,SSIS包在读取加载文件夹中的文件的作业上运行,并在成功完成后将其移动到存档文件夹

我知道我可以为每个工作簿创建一个单独的SSIS包,但这似乎很难维护。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我们早就遇到了同样的问题。我将总结一下我们所做的一切。 我们使用C#以编程方式编写了一个SSIS包。维护MetaTable,其保存平面文件的信息(表名,列,平面文件中这些列的位置)。我们提取平面文件名,然后在元表中查询该平面文件所属的表及其所拥有的列以及平面文件中的列位置。

我们通过将每个平面文件作为命令行参数传递给PackageExe来执行SQLSERVER中的包。所以它会读取并处理每个平面文件。

示例假设我们有一个平面文件 FF ,我们首先提取平面文件的名称,然后通过查询到DB获取表名,让我们说吧是 TT ,其中包含 COL-1 列, COL-2 ,其中 1到10 11分别为20 。现在,通过从MetaTable读取此信息,我创建了一个派生列转换(包。)

我们的应用程序在文件夹中有一组平面文件,通过使用“For Loop Container SSIS”,我们一次获得一个平面文件并执行上述过程。