0

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

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

我知道我可以为每个工作簿创建一个单独的 SSIS 包,但这似乎很难维护。任何帮助是极大的赞赏!

4

1 回答 1

1

我们很久以前就面临同样的问题。我只是总结一下我们所做的。我们使用 C# 以编程方式编写了一个 SSIS 包。维护一个 MetaTable,它保存平面文件的信息(表名称、列、这些列在平面文件中的位置。)。我们提取平面文件名,然后向元表查询该平面文件所属的表、它所具有的列以及平面文件中的列位置。

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

示例假设我们有一个平面文件FF,我们首先提取平面文件的名称,然后通过查询数据库获取表名,假设它是TT,其中包含列COL-1COL-2,位置为 1 到 1011 到 20分别。通过从 MetaTable 中读取这些信息,我现在创建了一个派生列转换(包。)

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

于 2012-04-23T09:29:42.437 回答