婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當(dāng)前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

    postgresql 利用fdw來實現(xiàn)不同數(shù)據(jù)庫之間數(shù)據(jù)互通

     2021-04-23 16:59  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領(lǐng)券再下單

    前言

    最近在工作的時候 需要用數(shù)據(jù)庫A中的表a1來更新插入數(shù)據(jù)庫B中的b2表 由于數(shù)據(jù)庫都是postgres數(shù)據(jù)庫,我想到了 postgres_fdw插件。

    準(zhǔn)備工作

    首先需要保證這兩個數(shù)據(jù)庫之間網(wǎng) 是通的

    數(shù)據(jù)庫A 名字 AA ip 10.10.2.100(虛構(gòu))端口 5432 用戶名 postgres

    數(shù)據(jù)庫B 名字 BB ip 100.20.0.120(虛構(gòu))端口 6688 用戶名 postgres

    一 利用fdw創(chuàng)建2個數(shù)據(jù)庫之間的連接

    1.1 安裝 postgres_fdw插件

    1Create extension "postgres_fdw";

    1.2 創(chuàng)建外部連接

    無論你實在A數(shù)據(jù)庫中創(chuàng)建B數(shù)據(jù)庫的連接 ,還是在B數(shù)據(jù)庫中創(chuàng)建A數(shù)據(jù)庫的連接 從本質(zhì)上是一樣的,都是為了打通2個數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)互通

    1.2.1 在A數(shù)據(jù)庫創(chuàng)建b數(shù)據(jù)庫的連接

     --創(chuàng)建外部服務(wù)器
    -- 括號里的三個參數(shù),分別是數(shù)據(jù)庫b的ip、端口和數(shù)據(jù)庫名稱
    CREATE SERVER lianjiebb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '100.20.0.120', port '6688', dbname 'BB');
    --創(chuàng)建用戶映射·
    -- 括號里的兩個參數(shù),分別是數(shù)據(jù)庫b數(shù)據(jù)庫的用戶名、密碼
    create user mapping for postgres server lianjiebb options(user 'postgres', password '數(shù)據(jù)庫密碼');

     

    1.2.2 在b數(shù)據(jù)庫創(chuàng)建a數(shù)據(jù)庫的連接

    --創(chuàng)建外部服務(wù)器
    -- 括號里的三個參數(shù),分別是數(shù)據(jù)庫a的ip、端口和數(shù)據(jù)庫名稱
    CREATE SERVER lianjieAA FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '10.10.2.100', port '5432', dbname 'AA');
    --創(chuàng)建用戶映射·
    -- 括號里的兩個參數(shù),分別是數(shù)據(jù)庫a數(shù)據(jù)庫的用戶名、密碼
    create user mapping for postgres server lianjieAA options(user 'postgres', password '數(shù)據(jù)庫密碼');

     

    1.2.3 查詢 外部鏈接

    1select * from pg_foreign_server;

    1.3 創(chuàng)建外部表

    在A數(shù)據(jù)庫創(chuàng)建b1表的外部鏈接

    CREATE FOREIGN TABLE tb_fdw_b1
     (
     collect_time timestamp(6),
     id varchar(36) ,
     列名1 numeric(12,2) ,
     列名2 int4 ,
    列名3 timestamp(6)
     ) --跟b1 一模一樣的表結(jié)構(gòu)就行
     server lianjiebb --你創(chuàng)建的外部鏈接名字
     options (table_name '時序庫的表名');

    查看外部表是否有數(shù),有數(shù)就表示ok了

    1select * from tb_fdw_b1;

    在數(shù)據(jù)庫b上創(chuàng)建a1表的外部鏈接也是一樣的

    二 插入數(shù)據(jù)

    2.1 往外部表tb_fdw_b1 插入表a1的數(shù)據(jù)

    因為 倆個表都是一樣的表結(jié)構(gòu),可以直接插入

    1INSERT into tb_fdw_b1 SELECT * from a1;

    因為外部表是實時的 在數(shù)據(jù)庫a中更改了 外部表tb_fdw_b1 的數(shù)據(jù) ,數(shù)據(jù)庫B中的b1表中的數(shù)據(jù)也隨之改變 達(dá)成了我們一開始的目的

    更新 UPDATE 刪除DELETE 也是一樣的 在這里就不說了

    三 利用定時任務(wù)來達(dá)成自動同步

    每天都需要執(zhí)行顯然不符合我們的“懶人”形象 ,所以用定時任務(wù)來實現(xiàn)明天自動同步是必不可少的 我讓他每天早上8點自動執(zhí)行

    3.1 利用 pgadmin實現(xiàn)定時同步(截圖)

    3.1.1

    3.1.2

    3.1.3

    3.1.4

    3.2 直接上語句實現(xiàn)定時同步

    DO $$
    DECLARE
     jid integer;
     scid integer;
    BEGIN
    -- Creating a new job
    INSERT INTO pgagent.pga_job(
     jobjclid, jobname, jobdesc, jobhostagent, jobenabled
    ) VALUES (
     1::integer, '更新表b1'::text, ''::text, ''::text, true
    ) RETURNING jobid INTO jid;

    -- Steps
    -- Inserting a step (jobid: NULL)
    INSERT INTO pgagent.pga_jobstep (
     jstjobid, jstname, jstenabled, jstkind,
     jstconnstr, jstdbname, jstonerror,
     jstcode, jstdesc
    ) VALUES (
     jid, '更新表b1'::text, true, 's'::character(1),
     ''::text, '數(shù)據(jù)庫A'::name, 'f'::character(1),
     ' INSERT into tb_fdw_b1 SELECT * from a1;'::text, ''::text
    ) ;

    -- Schedules
    -- Inserting a schedule
    INSERT INTO pgagent.pga_schedule(
     jscjobid, jscname, jscdesc, jscenabled,
     jscstart, jscend, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths
    ) VALUES (
     jid, '更新表b1'::text, ''::text, true,
     '2021-02-07 10:24:50 +08:00'::timestamp with time zone, '2100-02-07 10:24:52 +08:00'::timestamp with time zone,
     -- Minutes
     ARRAY[true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]::boolean[],
     -- Hours
     ARRAY[false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]::boolean[],
     -- Week days
     ARRAY[false,false,false,false,false,false,false]::boolean[],
     -- Month days
     ARRAY[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]::boolean[],
     -- Months
     ARRAY[false,false,false,false,false,false,false,false,false,false,false,false]::boolean[]
    ) RETURNING jscid INTO scid;
    END
    $$;

    文章來源:腳本之家

    來源地址:https://www.jb51.net/article/205688.htm

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關(guān)文章

    熱門排行

    信息推薦