此篇介紹下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. 執行數據操作(update,insert,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個數據庫單獨取值再進行處理,這樣開發效率和並發下性能以及查詢效率都不理想的,能簡則簡吧。