SQL使用非连续范围从Excel导入?

我有一些Excel电子表格,我不能改变,因为他们被其他部门使用,他们将不会改变他们。 他们是.xlsm超过500列(A:TH)。 我试图将它们导入SQL Server 2008在64位机器上,但我有巨大的问题。 所有forms的Excel导入似乎将我select的列截断为255。

最终将有5个单独的表格来存储这个数据与一个公共密钥。 我可以编写一个简短的VBA脚本,将Excel中的数据sorting,排列在源码表中,但是我想问问下面是否有可能:

这工作正常,并select列A:四

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\NEW.xlsm', 'SELECT * FROM [Details Sheet$A:IV]') 

有没有一个聪明的方法来做类似的非连续的范围,如

 SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\NEW.xlsm', 'SELECT * FROM [Details Sheet$C:C,IW:LZ]') 

即。 拿起列C中的密钥和额外的列IW:LZ? 对我来说,问题是使用全范围的C:LZ和SELECT [ID],[THIS],[THAT] FROM等将不能用于范围超过255列的字段,非常烦人!

你有没有尝试过使用SSIS导入Excel文件? 它对数据types可能非常挑剔,但是我从来没有碰到一个限制,我无法解决一些脚本组件。

它被devise成一个高性能的ETL工具,用于你想要完成的工作。 如果您是新手,可以查看这篇将维基百科整体作为XML导入多个表格的文章。

快速注意的是,您可能需要安装其他Office驱动程序才能读取Excel 2007格式,特别是在64位计算机上。