dblink
dblinkを使用して、クエリ内の別のデータベースのテーブルを参照できます。
次に、クエリは次のようになります(複数の異なるアプローチの1つ)。
SELECT id
FROM clients c
LEFT JOIN (
SELECT *
FROM dblink('dbname=mydb', 'SELECT id FROM clients')
AS c(id int)
) x USING (id)
WHERE x.id IS NULL;
PostgreSQL 9.1以降、追加モジュールのインストールがさらに簡単になりました。
CREATE EXTENSION dblink;
データベースごとに1回実行します。必要な特権について:
拡張機能をロードするには、そのコンポーネントオブジェクトを作成するために必要な権限と同じ権限が必要です。ほとんどの拡張機能では、これはスーパーユーザーまたはデータベース所有者の特権が必要であることを意味します。
コピー
dblink(または同様のx-dbツールが使用できない場合は、COPY
TO / FROMを試して、外部テーブルの内容を転送してください。
外国のデータベースでは:
COPY clients TO '/path/to/file';
ホームデータベース:
CREATE TEMP TABLE c_tmp (LIKE clients);
COPY c_tmp FROM '/path/to/file';
SELECT id
FROM clients c
LEFT JOIN c_tmp x USING (id)
WHERE x.id IS NULL;
温度 テーブルはセッションの終了時に自動的に削除されます。