0

定期的に Excel データをインポートする必要があります。DB2 のドキュメントを確認すると、外部関数を介して OLE DB データソースに直接アクセスできます。

しかし、私はそれを正しく設定することができません。Microsoft Access Database Enginge 2010とフィックスパックを入手し、データベース サーバーにインストールしました。

データベース サーバーのローカル ディレクトリに Excel ファイルを配置しました。( C:\Temp\test.xls)

TEST1Excel には、 2 つの行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;

次のエラーが表示されます。

ユーザー定義関数 "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 に答える