PostgreSQLのDBlinkを使用して他のデータベースのテーブルを参照する方法

記事内に広告が含まれています。

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でリモートデータベースへの接続を作成することで、リモートデータベースのテーブルにアクセスできるようになります。

タイトルとURLをコピーしました