他のDBのテーブルを透過的に扱うことができるリンクテーブルという仕組みがあります。
Linked Tables
http://h2database.com/html/advanced.html#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.
下記のように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へ格納、みたいな使い方を思いつきました。