2015-09-14 68 views
1

我想用sql查询加载Excel表中的SQL

我发现使用OPENROWSET加载从Excel表的数据,但它抛出错误:

Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" 
for linked server "(null)". 




SELECT * into temptable 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'Excel 8.0;Database=E:\Users\koushik.veldanda\New Microsoft Excel Worksheet.xlsx;IMEX=1', 
       'SELECT * FROM [Sheet1$]') 
+0

你能告诉我们您的查询? – Marusyk

回答

0

要解决此问题,安装正确驱动程序,然后重试。

你怎么知道安装了哪些驱动程序?打开“ODBC数据源管理器”窗口(开始>运行>键入ODBCAD32.EXE并输入),然后看一下驱动程序选项卡。下面的截图(在荷兰的Windows XP拍摄)表明双方为Excel 97-2003的JET 4.0驱动程序和Excel还算新ACE驾驶员2007 enter image description here

的驱动程序可以从在以下网页下载微软网站:

的Excel 97-2003的Jet 4.0驱动程序

Excel 2007中的ACE驾驶员 - 12.00.6423.1000

Excel 2010中的ACE驱动程序(测试版) - 14.00.4732.1000

旁注:Excel 2010驱动程序在Windows XP上不受支持,但我能够使用2007驱动程序查询2010 Excel工作表。我想,这是它在Office 2007推出

检查这个环节也可能是很有帮助的Office Open XML标准的结果:

http://blog.hoegaerden.be/2010/03/29/retrieving-data-from-excel/

+0

@OcasoProtal感谢您的评论。这里后我会提供我的答案建议的方式。 – soorapadman

+0

我需要在一些存储过程中使用这个查询,所以我需要查询 –

0

首先你必须使'Ad Hoc Distributed Queries'

sp_configure 'Ad Hoc Distributed Queries', 1; 
GO 
RECONFIGURE; 
GO 

,那么你必须遵循链接指令来完成这个错误

成功后,OLE DB提供程序Microsoft.Ace.OLEDB.12.0链接服务器(空)一些

http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx

按照上面的指令,然后你有,如果你得到这个错误,重新启动机器

从 服务器接收结果时发生传输级错误

那么你可以运行查询

SELECT * into newtable 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0 Xml;HDR=YES;Database=D:\Personal\MyTest.xlsx', 
    'SELECT * FROM [Sheet1$]'); 

再刷新DB你看到的新表与数据创建