亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL中使用dblink實現跨庫查詢的方法

2020-03-12 23:52:05
字體:
來源:轉載
供稿:網友

最近一個sql語句涉及到跨庫的表之間的聯合查詢,故研究學習下。

一開始研究知道了sql語句的寫法,但是執行通過不了,需要先安裝dblink擴展。這些博文里都沒說清楚,感謝網友指點,在windows下只需要在相應的數據庫下執行sql語句“create extension dblink”就ok了。而以上的博文基本上說的都是linux下的操作方法,也因此我走了彎路。

2.下載了PostgreSQL的源代碼,卻不知道語句在哪執行,貌似是在linux下的shell里執行的,我卻在psql和cmd里都試過,都是走過的彎路啊。也嘗試過直接拷貝dblink.sql里的語句運行,卻通不過報錯。

PostgreSQL,跨庫查詢

3.windows下很簡單,一句sql就搞定了“create extension dblink”.
在擴展里可以看到多了一個dblink:

PostgreSQL,跨庫查詢

函數里也相應的有了dblink開頭的一些函數:

PostgreSQL,跨庫查詢

這句sql語句貌似只調用運行了dblink.control文件:

PostgreSQL,跨庫查詢

3.寫sql語句測試下,是否ok。

跨庫查詢,先要建立數據庫連接,才能查詢否則會報錯。

如圖是提示的connection named"unnamed",因為有其他的連接,如果沒有任何連接,則會提示connection not available:

PostgreSQL,跨庫查詢

使用dblink(text,text),第一個參數是連接串,第二個參數是sql語句。執行成功:

PostgreSQL,跨庫查詢

或者使用dblink_connect(text)先建立連接,再用dblink(text)做跨庫查詢:

PostgreSQL,跨庫查詢

查看連接:

select dblink_get_connections()

斷開所有連接:

select dblink_disconnect()

斷開指定名稱的連接:

select dblink_disconnect('test')

如之前建立過名為‘test'的連接:

select dblink_connect('test','host=localhost dbname=cbe_sta user=postgres password=lifc126820');

則會提示斷開成功。

4.最后,我自己需要的sql語句也ok了,在同一個服務器上的兩個數據庫3張表的聯合查詢,先建立連接再做查詢:

select dblink_connect('host=localhost dbname=cbe_userdata user=postgres password=lifc126820');select A.id,A.code as poicode,A.cname,A.geo,A.x,A.y,A.s01,A.s02,A.s03,A.updatetime,A.tbcode,D.code,D.data,D.value,D.cname as colname,D.ifdata,D.sort from tb_test_poi A inner join ((select * from dblink('select poicode,code,data,value from tb_test_data_poi') as T1(poicode character varying(50),code character varying(50),data double precision,value character varying(500))) B inner join (select * from dblink('select cname,code as code1,ifdata,sort from tb_test_index_poi') as T2(cname character varying(200),code1 character varying(50),ifdata character varying(5),sort character varying(50))) C on B.code=C.code1) D on A.code=D.poicode;

如果做成視圖也行,這里就需要用dblink(text,text),如果直接用上面的sql語句會報錯說無法建立連接:

CREATE OR REPLACE VIEW vw_test_poi AS SELECT a.id, a.code AS poicode, a.cname, a.geo, a.x, a.y, a.s01, a.s02, a.s03,  a.updatetime, a.tbcode, d.code, d.data, d.value, d.cname AS colname,  d.ifdata, d.sort  FROM tb_test_poi a  JOIN (( SELECT t1.poicode, t1.code, t1.data, t1.value      FROM dblink('host=localhost dbname=cbe_userdata user=postgres password=lifc126820'::text, 'select poicode,code,data,value from tb_test_data_poi'::text) t1(poicode character varying(50), code character varying(50), data double precision, value character varying(500))) b  JOIN ( SELECT t2.cname, t2.code1, t2.ifdata, t2.sort      FROM dblink('host=localhost dbname=cbe_userdata user=postgres password=lifc126820'::text, 'select cname,code as code1,ifdata,sort from tb_test_index_poi'::text) t2(cname character varying(200), code1 character varying(50), ifdata character varying(5), sort character varying(50))) c ON b.code::text = c.code1::text) d ON a.code::text = d.poicode::text;

我發覺執行效率有點慢啊,查出來的數據是1萬多條,用了2秒多。目前我的程序里并沒有用dblink來做,因為輸入參數可以先單獨查一張表即可,然后給另外兩張表的信息關聯查詢上ok了,所以我分兩步來做了,解決了這個問題。具體效率未深入對比,如果后期需要調整,可以考慮用dblink來做,這樣畢竟程序里代碼會簡單很多。

 

注:相關教程知識閱讀請移步到PostgreSQL頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人第一av网站| 亚洲人成在线一二| 91精品国产综合久久久久久久久| 亚洲香蕉av在线一区二区三区| 69久久夜色精品国产69乱青草| 久久久久久999| 欧美成人四级hd版| 亚洲最新av网址| 91精品美女在线| 国产精品久久久久久久久久三级| 日韩精品中文字幕视频在线| 日韩精品中文在线观看| 97在线日本国产| 国模私拍一区二区三区| 欧美精品电影在线| 久久精品视频播放| 国产美女高潮久久白浆| 欧美大片欧美激情性色a∨久久| 尤物九九久久国产精品的特点| 欧美福利视频网站| 欧美整片在线观看| 欧美日韩国产在线看| 亚洲精品福利在线观看| 欧美性生交xxxxx久久久| 欧美性xxxx极品hd欧美风情| 91亚洲国产成人久久精品网站| 日本精品久久电影| 亚洲国产毛片完整版| 狠狠综合久久av一区二区小说| 午夜精品视频在线| 欧美日韩中文字幕在线| 亚洲老司机av| 中文字幕av一区中文字幕天堂| 精品无人区太爽高潮在线播放| 国产精品高潮呻吟久久av野狼| 国产精品夜色7777狼人| 日本在线观看天堂男亚洲| 国产成人黄色av| 日韩欧美国产网站| 亚洲精品国产精品久久清纯直播| 亚洲一区二区三区成人在线视频精品| 亚洲欧洲一区二区三区在线观看| 欧美美女15p| 亚洲美女在线观看| 成人免费淫片aa视频免费| 国产精品色午夜在线观看| 91sa在线看| 亚洲福利视频网站| 久久国产精品首页| 欧美成在线视频| 欧美电影免费观看电视剧大全| 在线成人激情视频| 九九视频这里只有精品| 亚洲成人久久一区| 国产精品三级在线| 欧美午夜片在线免费观看| 亚洲人成在线播放| 精品小视频在线| 欧美高跟鞋交xxxxxhd| 久久久久久亚洲| 午夜精品久久久久久久久久久久| 亚洲激情视频在线| 亚洲国产精品大全| 欧美性猛交xxxx黑人| 91精品国产91久久久久久| 欧美日韩在线看| 欧美黑人极品猛少妇色xxxxx| 亚洲国产成人在线播放| 日韩免费av片在线观看| 久久精品成人欧美大片古装| 国产精品第七影院| 欧美一区二区三区免费视| 久久青草福利网站| 日本欧美黄网站| 日韩av影片在线观看| 黑人与娇小精品av专区| 成人网在线观看| 日本精品免费一区二区三区| 中文字幕精品av| 性欧美暴力猛交69hd| 久久福利视频导航| 亚洲品质视频自拍网| 成年无码av片在线| 精品视频在线观看日韩| 成年人精品视频| 亚洲乱亚洲乱妇无码| 欧美一级大胆视频| 国产极品jizzhd欧美| 7m精品福利视频导航| 亚洲综合日韩在线| 情事1991在线| 亚洲福利视频二区| 久久国内精品一国内精品| 久久成人亚洲精品| 91产国在线观看动作片喷水| 国产亚洲美女久久| 国产精品久久综合av爱欲tv| 久久久精品一区二区| 欧美午夜电影在线| 欧美大片va欧美在线播放| 欧洲成人在线视频| 久久久久成人网| 亚洲第一区第二区| 在线精品播放av| 欧美亚洲在线视频| 亚洲伊人一本大道中文字幕| 欧美激情一区二区三区成人| 美女视频黄免费的亚洲男人天堂| 亚洲欧美日韩国产中文专区| 久久国产精品免费视频| 欧美大尺度激情区在线播放| 精品亚洲aⅴ在线观看| 国产精品999999| 国产亚洲免费的视频看| 亚洲欧美成人网| 日本精品性网站在线观看| 91精品在线影院| 国产日本欧美视频| 97涩涩爰在线观看亚洲| 88xx成人精品| 亚洲bt天天射| 国模精品一区二区三区色天香| 欧美与欧洲交xxxx免费观看| 91av在线播放视频| 亚洲国产精品人久久电影| 亚洲一区二区久久久久久| 北条麻妃99精品青青久久| 欧美激情视频一区| 午夜精品国产精品大乳美女| 亚洲国产精品成人精品| 欧美做爰性生交视频| www.欧美免费| 亚洲第一网站免费视频| 日韩在线小视频| 欧美另类极品videosbest最新版本| 欧美国产精品日韩| 精品久久久香蕉免费精品视频| 久久久精品免费视频| 精品国产福利在线| 久久久久北条麻妃免费看| 91亚洲精品在线| 中文字幕成人精品久久不卡| 97国产真实伦对白精彩视频8| 欧洲亚洲免费视频| 久久视频在线视频| 欧美人成在线视频| 91国内免费在线视频| 97在线观看免费高清| 美女视频黄免费的亚洲男人天堂| 欧美成人sm免费视频| 亚洲一区二区三区sesese| 91黑丝高跟在线| 97视频国产在线| 久久久久久久91| 亚洲女在线观看| 欧美另类老女人| 国产91精品久久久| 欧美另类第一页| 成人做爽爽免费视频| 一区二区三区www| 2019亚洲男人天堂| 91精品国产色综合久久不卡98| 日韩禁在线播放| 欧美激情一区二区久久久|