PostgreSql 使用dblink跨庫


此篇介紹下psql下dblink的使用方式,幫助自己記錄以備后需。dblink是psql下的擴展功能,可以實現在一個數據庫中遠程操作另外一個數據庫,是實現跨庫的一種方法。下面步入正文。

  • 安裝dblink  
      安裝方式自行百度(psql數據庫默認是安裝了的,可先在服務器上查看),安裝完后$PGHOME下的lib下就有個dblink.so文件
      
  • 先安裝擴展  
    create extension dblink;

     安裝完后函數里有了擴展函數。

    1 --查看pgsql數據庫已安裝的擴展
    2 select * from pg_extension;

     

  • 使用方式

     1 --常規使用
     2 select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
     3 --如果不只是查詢數據,而是需要修改數據庫數據的情況下怎么弄呢?
     4 1. 先執行dblink_connect保持連接
     5  SELECT dblink_connect('mycoon','hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456');  
     6 2. 執行BEGIN命令
     7  SELECT dblink_exec('mycoon', 'BEGIN');
     8 3. 執行數據操作(updateinsert,create等命令)
     9  SELECT dblink_exec('mycoon', 'insert into tb1 select generate_series(10,20),''hello''');
    10  SELECT dblink_exec('mycoon', 'insert into people(username,nikename) values ("張三","小三") ');
    11 4. 執行事務提交
    12  SELECT dblink_exec('mycoon', 'COMMIT');
    13 5. 解除連接
    14  SELECT dblink_disconnect('mycoon');
  • dblink配合視圖view使用,畢竟每次寫dblink有點多余
    1 CREATE VIEW people_nikename_view AS 
    2 select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);

     這樣以后就可以查視圖view了

    1 select * from people_nikename_view 

     建議:psql下表名 字段名這些盡量用小寫

  • 優勢
    這樣解決了psql數據庫跨庫問題,用DBLINK方便快捷簡單,事務性處理 一次可以對其他數據庫進行多種操作。當然你也可以在程序里面對2個數據庫單獨取值再進行處理,這樣開發效率和並發下性能以及查詢效率都不理想的,能簡則簡吧。
      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM