2012-10-09 68 views
0

我必須定期導入一些Excel數據。檢查DB2 documentation可以通過外部函數直接訪問OLE DB數據源。從DB2讀取Excel

但是我無法正確設置它。我得到了Microsoft Access Database Enginge 2010加上修復包並將其安裝在數據庫服務器上。

我把excel文件放在數據庫服務器的本地目錄中。 (C:\Temp\test.xls

的Excel中有一個名爲TEST1兩行ABCDEF以下一些數字數據工作簿:

ABC | DEF 
--------- 
1 | 5 
2 | 6 
3 | 7 
4 | 8 

要創建我用下面的語句中的表功能:

CREATE OR REPLACE FUNCTION MYSCHEMA.test_excel() 
    RETURNS TABLE(ABC INTEGER, 
      DEF INTEGER) 
LANGUAGE OLEDB 
EXTERNAL NAME '!TEST1!Provider=Microsoft.ACE.OLEDB.12.0; 
     Data Source=C:\Temp\test.xls; 
    Extended Properties="Excel 8.0;HDR=Yes"'; 

它似乎創造了這個功能。然而,隨着查詢數據時:

SELECT * FROM TABLE(MYSCHEMA.test_excel()) AS FUNCTABLE; 

,我發現了以下錯誤:

User defined function "MYSCHEMA.TEST_EXCEL" received an OLE DB error from specified OLE DB provider. HRESULT="0x80040e37". Diagnostic text: "The Microsoft Access database engine".. SQLCODE=-1183, SQLSTATE=38506, DRIVER=3.53.71

按照documentation的錯誤意味着:0x80040E37 The specified table does not exist.

!TEST!應該引用該工作簿,但我不確定它是否是正確的語法。如何從DB2訪問Excel工作表?有沒有辦法獲得更詳細的錯誤信息?有沒有人有正確的命名方案?

回答

0

命名似乎不正確。看着其他oledb樣本,我認爲'$'丟失了。

!TEST$!在引用名爲TEST的工作表時可以作爲外部名稱,我可以訪問數據。