PostgreSQLで、異なるデータベースのテーブルを結合したい場合、dblinkを使用すると便利です。
dblinkを使用するための準備と、使用方法について説明します。
環境
- OS:Ubuntu Server 22.04.2 LTS
- PostgreSQL15.5
dblinkの準備
dblinkを使用するためには、PostgreSQLのエクステンションをインストールしておく必要があります。
postgres=# create extension dblink; postgres=# \dx インストール済みの拡張一覧 名前 | バージョン | スキーマ | 説明 ---------+------------+------------+-------------------------------------------------------------- dblink | 1.2 | public | connect to other PostgreSQL databases from within a database plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 行)
dblinkを使用
dblinkを使用するために参照するためのテーブルは、あらかじめviewとして準備しておくと便利です。
// 「DBLINK-SAMPLE」という名称でビューを作成しておく create or replace view link_view_sample as select col1 , col2 , col3 from dblink( 'DBLINK-SAMPLE' ,'select col1 , col2 , col3 from other_server_table otTble left outer join my_server_table myTble on otTble.col1 = myTble.kojin_col1 ) AS t( col1 int , col2 int , col3 int );
作成したビューを使用するためには、リンク先サーバと接続→SQLを実行→リンク先サーバとの接続解除、の流れになります。
// リンク先サーバと接続 select dblink_connect( 'DBLINK-SAMPLE' , 'host=X.X.X.X dbname=database user=saku password=saku00' ); // ビューを参照 select col1 , col2 , col3 from link_view_sample; // リンク先サーバとの接続解除 select dblink_disconnect('DBLINK-SAMPLE');