定期的に Excel データをインポートする必要があります。DB2 のドキュメントを確認すると、外部関数を介して OLE DB データソースに直接アクセスできます。
しかし、私はそれを正しく設定することができません。Microsoft Access Database Enginge 2010とフィックスパックを入手し、データベース サーバーにインストールしました。
データベース サーバーのローカル ディレクトリに Excel ファイルを配置しました。( C:\Temp\test.xls
)
TEST1
Excel には、 2 つの行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 ワークシートにアクセスするにはどうすればよいですか? より詳細なエラー メッセージを取得する方法はありますか? 誰かが正しい命名スキームを持っていますか?