sql >> データベース >  >> RDS >> PostgreSQL

dblink.sqlを使用してPostgreSQLの2つのテーブル間でデータをコピーします

    パッケージをシステムにインストールした後、関連する質問で 拡張機能dblinkをインストールします データベースに(このコードを実行しているデータベースでは、外部データベースはそれを必要としません):

    CREATE EXTENSION dblink;
    

    コード例はマニュアルにあります
    これは、db間でデータをコピーするために使用するものの簡単なバージョンです。まず、外国のサーバーを作成する

    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;
    



    1. scala/javaを使用してストアドプロシージャのoracleパラメータ配列を呼び出す

    2. 1ページに制限するMySQLクエリの数はいくつですか? PHP / MySQL

    3. フィルタ可能な属性を持つアイテムを保存する正しい方法は?

    4. mysqlからの日付がjavascriptで1日減少するのはなぜですか?