团队,
我的目标是使用 SSIS 将数据从 Excel 加载到 Sql 表。然而,Excel 是非常动态的,即它们的列数可能会变化,或者现有列的顺序可能会改变。但目标表将是相同的...
所以我正在考虑一些选择,例如:
1)在“Excel源”中使用SQL命令 - 但不幸的是,我必须将“第一行作为标题”设置保留为false(为了解决Excel Connection Mngr根据前几条记录将数据类型感知为数字的问题)。所以基于header的查询在这里不起作用。
2) 我想到的另一个选择是脚本任务,并根据我所知道的列编写 C# 代码来读取 excel。因此在这种情况下,新列的顺序和插入/删除并不重要。
建议我脚本任务是否是我唯一可用的选项?还有其他简单的方法可以在 SSIS 中实现相同的目的吗?如果可能的话,建议我引用一下。
谢谢, 贾斯汀·塞缪尔。
最佳答案
如果您需要自动化该过程,那么我肯定会使用脚本组件/OleDbDataAdapter 组合(您不能使用流读取器,因为 Excel 是专有格式)。如果没有,请使用导入向导。
如果您尝试使用基于连接管理器的解决方案,当文件布局更改时,它将会失败。使用脚本组件/OleDbDataAdapter 组合,您可以添加逻辑来解释字段并在加载之前标准化记录布局。您还可以创建一个错误缓冲区,并使用 Try/Catch 优雅地将错误值推送到其中。
以下是有关如何在数据流任务中使用脚本组件作为源的一些链接:
http://microsoft-ssis.blogspot.com/2011/02/script-component-as-source-2.html http://beyondrelational.com/modules/2/blogs/106/posts/11126/ssis-script-component-split-single-row-to-multiple-rows.aspx
关于sql - SSIS - 除了脚本任务之外的任何其他解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682553/