2015-09-14 29 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你看到的新表與數據創建

相關問題