0

我必须定期导入一些 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 工作表?有没有办法获得更详细的错误信息?有没有人正确的命名方案?

4

1 回答 1

0

命名似乎不正确。查看其他 oledb 示例,我发现缺少“$”。

!TEST$!在引用名为的工作表时用作外部名称TEST,我可以访问数据。

于 2012-10-10T12:08:24.333 回答