[h2db]別のDBとの連携について

  h2database

他のDBのテーブルを透過的に扱うことができるリンクテーブルという仕組みがあります。

Linked Tables
This database supports linked tables, which means tables that don’t exist in the current database but are just links to another database.
You can then access the table in the usual way. Whenever the linked table is accessed, the database issues specific queries over JDBC.

http://h2database.com/html/advanced.html#linked_tables

下記のようにCREATEコマンドでテーブルを作成する形になります。

CREATE LINKED TABLE AAAA('org.postgresql.Driver', 'jdbc:postgresql:test', 'sa', 'sa', 'BBBB');
項目説明
AAAA参照用のテーブル名エイリアス
第一引数接続用JDBCドライバ
第二引数JDBC接続文字列
第三引数ユーザ名
第四引数パスワード
第五引数接続先のテーブル名

例えばH2DBで下記SQLを実行すると、

SELECT * FROM AAAA WHERE ID=1

接続先のDBで下記のように置き換えられて実行されます。

SELECT * FROM BBBB WHERE ID=1

ちょっと思いつく用途としてはCSV出力。H2DBのCSVファイル出力する機能をほかのDBでも甘受することができますね。

call csvwrite('out.csv', 'select * from AAAA');

他にも、商用稼働しているDBをリンクテーブル経由でデータを拝借して、自前ツールで加工、ローカルDBへ格納、みたいな使い方を思いつきました。

LEAVE A COMMENT