PostgreSQL跨庫查詢

2021-08-26 17:09:06 字數 2049 閱讀 1940

首先宣告,我是從mssql陣營剛入postgresql陣營的。轉營這幾天來,深感這些年來被mssql坑害不淺!

進入正題,在mssql中,跨資料庫(相同伺服器或不同伺服器的都算)查詢可以輕鬆使用select * from otherdb.dbo.mytable(相同伺服器中的不同資料庫)或select * from otherserver.otherdb.dbo.mytable(不同伺服器中的不同資料庫,其中otherserver是個鏈結伺服器)完成,甚是方便!

1、安裝dblink擴充套件

linux下可以參考:

《postgresql的小技巧》

windows下可以參考:

《windows環境下配置postgresql的dblink功能》

windows環境下配置dblink其實要比在linux下簡單一些,因為在您安裝完postgresql後,在您的安裝目錄的postgresql/8.1/lib目錄下已經存在有dblink.dll檔案(相當於linux下的dblink.so檔案),這是使用dblink所必需的函式檔案,當然在linux環境下您可以通過以下方式建立.so檔案: #cd contrib/dblink #make #make install 接下來的工作就是要在您需要遠端訪問其它database的資料庫中匯入dblink的函式了,這些函式官方已經為您寫好了,就是存放在postgresql/8.1/share/contrib目錄下的dblink.sql檔案,您只需要進入postgresql命令列執行如下語句: ... ...bin>psql -d [資料庫名] -f[sql檔名(即dblink.sql檔案的路徑+名稱)] 就可以了,好了,如果看到一串 create function 那就說明成功了,接下來就是去感受一下dblink的功能了

注意,我用的是postgresql9.1版的,使用psql -d mydb -f dblink--1.0.sql的時候不成功,說是:

use "create extension dblink" to load this file.

後來,乾脆使用

psql -d mydb -u lslxdx

輸入密碼後,進入plsql的shell裡,在這裡邊輸入

create extension dblink;

返回 create extension表示成功。

2、使用dblink

進入pgadmin裡的query視窗,執行:

select * into stu from dblink('host=127.0.0.1 dbname=postgres user=lslxdx password=123456','select * from stu') as stu(sid int,sno varchar(32),sname varchar(64));

就可以在別的mydb查詢postgres庫里的東西啦~

dblink的使用可以參考:

a.《關於postgresql跨庫查詢的問題》

b.《postgresql 8.3.17 documentation》

3、注意

執行 psql -d mydb時,預設的登陸使用者名稱(username)是計算機的使用者名稱,比如,我的是leesonlog,如果資料庫裡沒有這個使用者名稱,那麼在之後的輸入密碼階段,肯定是過不去的,所以,應該使用

psql -d mydb -u lslxdx-u引數可以加資料庫的登陸名。使用psql可以進入plsql的shell,或者也可以直接從開始選單中postgresql程式組裡雙擊「sql shell (psql)」,然後一路回車,直接進入plsql的shell我把「c:\program files\postgresql\9.1\bin」直接加到環境變數的path裡了,所以可以直接在任何目錄輸入psql,否則就需要進入「c:\program files\postgresql\9.1\bin」才能執行psql。在postgresql9.1版中,dblink.sql放在「c:\program files\postgresql\9.1\share\extension」資料夾中,而且名字叫「dblink--1.0.sql」,執行「psql -d mydb -f dblink--1.0.sql」時,要指定dblink.sql的檔案路徑(相對或絕對)。 

postgresql 跨庫查詢

跨庫訪問常用的三種方式 schema,dblink,postgres fdw 第一種 schema 架構方式 其實還是在乙個資料庫中,只不過把不同資料儲存在不同的架構中,建立與public並行的架構 訪問其他架構下面的需要帶上架構名稱.表名,如下格式 select from public.test ...

mysql跨庫跨表查詢

簡單記錄 select from dysns.uchome pay record,91feile.phpcms game where uchome pay record.uid phpcms game.touserid select from dysns.uchome pay record,91fe...

mysql跨服務跨庫查詢

若是不同服務不同庫需要 檢視federated引擎是否開啟 mysql查詢視窗輸入指令 show engines 如果有federated引擎,但support是no,說明你的mysql安裝了這個引擎,但沒啟用,去mysql安裝錄下找到配置檔案my.ini,在 mysqld 字段 檔案末 新增一行f...