sql-server - 在 ssis 中动态加载 .xlsx 文件

标签 sql-server excel ssis etl script-task

我创建了一个 SSIS 来加载 excel 文件。它循环遍历相关文件的指定文件夹,并将每个文件中的数据读入原始数据表,然后我有 SQL 脚本来进行验证并将数据放在相关表中等……一切正常。

但我现在需要让 ssis 包处理加载具有 3 种不同文件结构的 excel 文件。即一个文件有 50 列,一个有 55 列,一个有 60 列。

我尝试使用脚本任务加载数据

Insert into <rawdatatable> select * from openrowset('Microsoft.Jet.OLEDB.4.0','excel 8.0; database=D:\SSIS\FileToLoad.xlsx', 'Select * from [Sheet1$]')

但我不断收到以下错误,但添加错误日志不会给出任何其他错误

Exception has been thrown by the target of an invocation



enter image description here

我正在使用 SQL Server 2014 和 VS 2013

我不太确定我在这里做什么,任何帮助或指导将不胜感激

谢谢

最佳答案

您必须使用 Microsoft.ACE.OLEDB.12.0提供商,请尝试以下操作:

Insert into <rawdatatable> 
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                         'Excel 12.0;Database=D:\SSIS\FileToLoad.xlsx;HDR=YES', 
                         'SELECT * FROM [Sheet1$]')

引用文献
  • Import/Export Excel (.Xlsx) or (.Xls) File into SQL Server
  • 关于sql-server - 在 ssis 中动态加载 .xlsx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48400744/

    相关文章:

    sql - 在SQL中不更新行

    Excel 2010 中 VBA 中的 SQL 字符串与日期

    SSIS-文本被截断或目标代码页中的一个或多个字符不匹配-特殊字符

    ssis - 什么是主数据?

    sql - 在 System.Data.Linq.DataContext 对象上重新编译查询提示

    sql-server - 在 C# 中从数据库获取字符串值

    c# - Entity Framework 强制 CASE-WHEN 列不可为空

    excel - 有没有函数可以找到#DIV/0! 的来源?和#NUM!巨大的 Excel 文件中出现错误?

    excel - 为什么 POISSON 函数在 Microsoft Excel 中不一致?

    sql-server - 将平面文件导入 SQL - 添加字符后不会抛出错误