PostgreSQL跨庫查詢

來源:互聯網
上載者:User

首先聲明,我是從MSSQL陣營剛入PostgreSQL陣營的。轉營這幾天來,深感這些年來被MSSQL坑害不淺!

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

這幾天使用PostgreSQL的時候,突然發現需要在PostgreSQL中實現跨庫查詢,本以為可以使用類似"資料庫.資料表"的方式完成呢,結果失敗了……從網上查了下,知道PostgreSQL中需要使用dblink函數實現跨庫或跨伺服器查詢,據說是仿照著Oracle的dblink做的,挺好,試著配置了下,把配置過程詳細地下出來,供大家參考。

1、安裝dblink擴充

LInux下可以參考:

《PostgreSQL的小技巧》

http://tieba.baidu.com/f?kz=163201318#

Windows下可以參考:

《Windows環境下配置PostgreSql的dblink功能》

http://blog.csdn.net/lr2651/article/details/1375769

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跨庫查詢的問題》

http://topic.csdn.net/u/20100203/14/def81dd8-e6cc-4524-867d-6f4b6f99836c.html

b.《PostgreSQL 8.3.17 Documentation》

http://www.postgresql.org/docs/8.3/static/contrib-dblink.html

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的檔案路徑(相對或絕對)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.