我必須定期導入一些Excel數據。檢查DB2 documentation可以通過外部函數直接訪問OLE DB數據源。從DB2讀取Excel
但是我無法正確設置它。我得到了Microsoft Access Database Enginge 2010加上修復包並將其安裝在數據庫服務器上。
我把excel文件放在數據庫服務器的本地目錄中。 (C:\Temp\test.xls
)
的Excel中有一個名爲TEST1
兩行ABC
和DEF
以下一些數字數據工作簿:
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工作表?有沒有辦法獲得更詳細的錯誤信息?有沒有人有正確的命名方案?