関連する質問で詳しく説明されているようにパッケージをシステムにインストールした後、拡張機能dblink
をデータベースにインストールします(このコードを実行しているデータベースでは、外部データベースはそれを必要としません)。
CREATE EXTENSION dblink;
コード例はマニュアルにあります。
これは、データベース間でデータをコピーするために使用するものの簡単なバージョンです。まず、FOREIGNSERVERを作成します。
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
私の場合はプリインストールされていました。
次に、接続を開き、古いデータ(場合によっては)を削除し、新しいデータをフェッチANALYZE
し、接続を実行して閉じる関数を作成します。
CREATE OR REPLACE FUNCTION f_tbl_sync()
RETURNS text AS
$BODY$
SELECT dblink_connect('mydb'); -- USER MAPPING for postgres, PW in .pgpass
TRUNCATE tbl; -- optional
INSERT INTO tbl
SELECT * FROM dblink(
'SELECT tbl_id, x, y
FROM tbl
ORDER BY tbl_id')
AS b(
tbl_id int
,x int
,y int)
ANALYZE tbl;
SELECT dblink_disconnect();
$BODY$
LANGUAGE sql VOLATILE;