PostgreSQL の DBlink を使用すると他のデータベースのテーブルを自分のデータベース内にあるテーブルのように参照することができます。
PostgreSQL の DBlink を使用するには extension を導入する必要があります。
PostgreSQLのDBlinkを使用する準備
PostgreSQL の DBlink を使用するには extension を導入する必要があります。
extension は pgAdmin などのツールから DBlink を使用するデータベースで以下のコマンドを実行します。
create extension dblink;
これは一度だけ実行するだけで OK です。
PostgreSQLのDBlinkを使用する
準備ができたら実際に DBlink を作成します。
SELECT * FROM dblink( 'hostaddr=HostAddress port=PortNo dbname=DatabaseName user=UserName password=PassWord', ,'SELECT id, name from target_table' ) AS t1( id integer, name text ) ;
dblinkメソッドにリモートデータベースへの接続情報とリンクするテーブルの情報を渡して、その結果を SELECT しています。
これで他のデータベースのテーブルを自分のデータベース内にあるようにアクセスできます。
VIEWにした方が便利
前項で作成した DBlink は毎回リモートデータベースへの接続情報を指定しないといけないので少し不便です。
そこで、このSQLをVIEWにしておけば単純な SELECT でデータを取得することができます。
CREATE OR REPLACE VIEW remote_table_view AS SELECT t1.id ,t1.name FROM dblink( 'hostaddr=HostAddress port=PortNo dbname=DatabaseName user=UserName password=PassWord', ,'SELECT id, name from target_table' ) AS t1( id integer, name text ) ;
これで単純に
SELECT * FROM remote_table_view
でリモートデータベースのテーブルにアクセスできます。
まとめ
PostgreSQL の DBlink を使用するには extension を導入し、dblinkでリモートデータベースへの接続を作成することで、リモートデータベースのテーブルにアクセスできるようになります。