此篇介紹下psql下dblink的使用方式,幫助自己記錄以備後需。dblink是psql下的擴展功能,可以實現在一個資料庫中遠程操作另外一個資料庫,是實現跨庫的一種方法。下麵步入正文。 安裝dblink 安裝方式自行百度(psql資料庫預設是安裝了的,可先在伺服器上查看),安裝完後$PGHOME下的 ...
此篇介紹下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個資料庫單獨取值再進行處理,這樣開發效率和併發下性能以及查詢效率都不理想的,能簡則簡吧。