我必须定期导入一些 Excel 数据。查看DB2 文档可以通过外部函数直接访问 OLE DB 数据源。
但是我无法正确设置它。我获得了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;
我收到以下错误:
用户定义函数“MYSCHEMA.TEST_EXCEL”收到来自指定 OLE DB 提供程序的 OLE DB 错误。HRESULT="0x80040e37"。诊断文本:“Microsoft Access 数据库引擎”.. SQLCODE=-1183, SQLSTATE=38506, DRIVER=3.53.71
根据文档,错误意味着:0x80040E37 The specified table does not exist.
应该参考!TEST!
工作簿,但是我不确定它是否是正确的语法。如何从 DB2 访问 Excel 工作表?有没有办法获得更详细的错误信息?有没有人正确的命名方案?