SSIS - 动态列映射

时间:2010-06-24 07:22:33

标签: ssis

我正在使用SSIS从excel到OLEDB SQL进行数据转换。我在一个文件夹中有一组工作表,我必须循环,并将每个工作表中的数据插入到表中。我有一个场景,我必须通过一组具有不同列结构的Excel工作表循环。我可以通过foreach循环枚举器循环遍历每个工作表找到文件名并将它们传递给Excel源。

我想知道是否有办法在目标组件中转义这个列映射,在我的情况下它将是一个OLEDB SQL表。因为这些映射对于每个文件都不同。有没有办法动态地这样做?

1 个答案:

答案 0 :(得分:5)

虽然您可以在循环内添加脚本任务来修改映射,但这不是最简单的事情,因为您必须在代码中显式创建每个映射。一个更简单的解决方案是用分隔的文本文件替换excel表,并使用批量插入任务将它们导入循环内。只要列顺序在文件和表中都相同,您就不必提供任何映射信息。

如果您不能这样做,您将努力将映射元数据存储在某处,例如数据库中的表,并使用它在脚本任务中创建动态映射。

一种稍微简单的方法是仅使用一个使用元数据配置SqlBulkCopy对象的脚本任务。你失去了完整数据流任务的灵活性,但如果你想要的只是加载一些临时文件中的文件,那就足够了。另外,配置SqlBulkCopy对象要比数据流任务容易得多。