PG


PostgreSQLデータベース間でライブラリ間操作を行う方法
  • dblink
  • postgres_fdw

  • 本文はまずdblinkについて話します.dblinkは、データベース・セッションから他のPostgreSQLデータベースへの接続をサポートするプラグインです.他のデータベースでのライブラリ間操作もdblink方式を採用しています

    一、dblinkのインストール


    PostgreSQLプラグインdblinkはPostgreSQLインストールパッケージに付属しています.インストールデータベースにdblinkプラグインがインストールされていない場合.自分でコンパイルしてインストールすることができます.dblinkを使用します.まずdblinkに従って拡張します.インストールが完了した後dblink関数を呼び出して、ライブラリ間操作を実現します.私たちがよく使う操作は、ライブラリ間クエリーです.
    lottu01=# create extension dblink;CREATE EXTENSION

    二、dblinkの使用


    2.1、dblink接続の作成(dblink_connect)


    dblink_を呼び出すconnect関数;dblink接続を作成します(接続名はlottu).これにより、このセッションでlottuデータベースの下のオブジェクトにアクセスできます.
    lottu01=> select dblink_connect('lottu', 'host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu'); dblink_connect ---------------- OK(1 row)

    2.2、クロスライブラリクエリーテーブル(dblink)


    dblinkを使用します.ライブラリ間クエリー操作がもっと多いです.dblink_が作成されたため接続;だから私たちは使ってもいいです.
    lottu01=> SELECT * FROM dblink('lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);  id  | info  ------+------- 1001 | lottu(1 row)

    私たちも直接使うことができます.無効なdblink_の作成connect.これはよく使われる方法です.
    lottu01=> SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);  id  | info  ------+------- 1001 | lottu(1 row)

    2.3.クロスライブラリでddl、dcl操作(dblink_exec)を実行する


    ライブラリ間でcreate、insert、update、delete文を操作すると、実際には、この動作は一般的にライブラリ間では動作しません.使用を慎む!次にinsert操作を示します
    lottu01=> SELECT dblink_exec('lottu', 'insert into public.t1 values (1002,''hello'')'); dblink_exec ------------- INSERT 0 1(1 row)# ORlottu01=> SELECT dblink('lottu', format('insert into public.t1 select %L, %L', 1003, 'lottu'));     dblink     ---------------- ("INSERT 0 1")(1 row)

    2.4、dblink接続を閉じる


    PostgreSQLではdblinkはセッションレベルです.セッションが切断されるとdblinkも閉じます.もちろん、セッション中に手動で閉じることもできます
    lottu01=> SELECT dblink_disconnect('lottu'); dblink_disconnect ------------------- OK(1 row)

    三、拡張


    dblinkクエリーを使用します.conn_を付けるstr;非常に簡潔ではありません.セッションでテンポラリ・テーブル/ビューを使用して保存します.2つの効果が異なる
    ビュー/テンポラリ・テーブルを選択します.あなたのニーズを見てください.PostgreSQLではテンポラリ・テーブルはセッション終了後も保持されません.このようなメリット;使用しない場合は対応するテンポラリテーブルを削除する必要はありません
    lottu01=> create temp table lottu_t1 as SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);SELECT 2lottu01=> select * from lottu_t1;  id  | info  ------+------- 1001 | lottu 1002 | hello(2 rows)

    四、シーンの適用


    PostgreSQLはdblinkを使用します.優位性は;即取即用;他のオブジェクトを作成する必要はありません.次の章ではPostgreSQLについて説明します.fdw;PostgreSQL_よりfdwの優位性はここにある.足りないところ後続の補足説明.

    4.1、リモート・ライブラリ表の同期


    開発の仕事の中で;データベースをテストするには、(新規/古い)テーブルのデータを同期する必要があります.dblinkを使うのはとても便利です.
    lottu01=> create table public.t1(id int, info text);CREATE TABLElottu01=> insert into public.t1 SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);INSERT 0 5lottu01=> select * from public.t1;  id  | info  ------+------- 1001 | lottu 1002 | hello 1003 | rax 1004 | rax 1005 | lottu(5 rows)

    詳細はdblinkを参照してください.PG
    記事の転載:http://www.shaoqun.com/a/463243.html