sql - SSIS - 除了脚本任务之外的任何其他解决方案

标签 sql sql-server ssis

团队,

我的目标是使用 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/

相关文章:

java - ibatis中如何判断插入是否完成?

SQL Server - 包含 FOR XML 要求的无效 XML 标识符;

sql - 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表

c# - 在 Windows 窗体或 WPF 应用程序中使用集成服务项目?

mysql - 将 MySql 数据库转换为带有数据的 MS SQL Server 2005?

sql-server - PowerShell DTexec/ISServer传递连接字符串作为包变量

sql - 如何解决此 SQL 代码中的 ORA-00918 错误

java - 为系统进行身份验证设计(登录表单)的好做法是什么

MySQL:仅按连接的行分组

c# - 查询永不返回