在ssis中动态加载.xlsx文件

时间:2018-01-23 11:33:57

标签: sql-server excel ssis etl script-task

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

但我现在需要让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$]')

但我一直收到以下错误,但添加错误记录不会给出任何其他错误

  

调用目标抛出了异常

enter image description here

我正在使用SQL Server 2014和VS 2013

我不确定我在这里做什么,任何帮助或指导都会受到赞赏

由于

1 个答案:

答案 0 :(得分:1)

您必须使用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$]')

<强>参考