什麼是跨資料庫查詢呢~?!
例如:有A,B這兩個Databaes,
隨便下一個Join SQL: select * from A.table inner join B.table on a.id=b.id;
這就是跨資料庫查詢了!我記得Oracle,SQL SERVER,MySQL都能支援這種跨資料庫查詢的功能!
可是當PostgreSQL 要做這總功能時會產生下列
Error Code:ERROR: cross-database references are not implemented
到GOOGLE查了一下原來PostgreSQL 不支援跨資料庫查詢~~如果要達到這種功能要用DBLINK~~~看起來挺麻煩的!!接下來來介紹怎麼去用PostgreSQL的DBLINK!!!
1.安裝postgresql-contrib
#cd /root/postgresql-8.4.4/contrib/
#make && make install
2.安裝dblink
#cd /root/postgresql-8.4.4/contrib/dblink
#psql -Upgsql -p6789 dbname -f dblink.sql
(這裡的dbname 是指你要在哪個DB上安裝dblink.sql,如果全部的DB都要裝那應該要多裝幾次
如果是剛新裝的DB那就裝在template1裡面~~之後開新DB時就可以用template1當模板~這樣 dblink就不用一直重覆裝了)
裝完後會看到很多DDlink的Function!!
3.使用dblink
SELECT *
FROM dblink('host=IP port=6789 dbname=dbname user=user password=pw', 'select proname, prosrc from pg_proc')
AS t1(proname name, prosrc text)
WHERE proname LIKE 'bytea%';
這樣就達成PostgreSQL的跨資料庫查詢了~~還真麻煩!!!
感覺SQL很長看了很刺目~~如果想變短一點可以把他寫成View~~
參考資料:
http://www.postgresql.org/docs/current/static/contrib-dblink.html
http://zh-tw.w3support.net/index.php?db=so&id=46324
http://space.itpub.net/7351491/viewspace-615645
沒有留言:
張貼留言