Postgresql中常用dblink擴充套件的使用

2021-09-01 22:23:08 字數 2860 閱讀 7071

postgresql中dblink擴充套件的功能是可以在乙個資料庫中操作另外乙個遠端資料庫。比如:乙個資料庫在中國北京,另外一台資料庫在中國上海,我可以在北京這台資料庫上面建立乙個到上海資料庫的dblink,然後可以在北京這台資料庫上面對上海的資料庫進行query或者update或者delete。

dblink的安裝:章郎蟲這裡安裝的是postgresql 9.2版本,psql進入資料庫後執行create extension dblink就可以了。

dblink的使用:

1、dblink_connect

這個命令主要作用是建立乙個到遠端資料庫的連線,比如

select dblink_connect('myconn', 'host=***.***.***.*** port=xx dbname=postgres user=myname password=mypassword');

myconn表示連線名稱,可以不寫,不過建議還是寫下連線名稱。

2、dblink_disconnect

斷開遠端資料庫連線,比如

select dblink_disconnect('myconn') ;

3、dblink_get_connections

檢視當前的遠端連線,直接select dblink_get_connections() ;就可以看到連線,如果 。

4、dblink

這個命令意思就是執行乙個遠端的查詢。如果遠端連線成功,那麼就可以在本地操作遠端資料庫了。

select * from dblink('myconn','select * from mytable') as t(a int, b text, c text) ;

查詢遠端資料庫中mytable表中的資料,這裡as後面相當於把遠端資料庫中的字段在本地重新命名。這個一定要寫,不然dblink會報錯誤。

select * from dblink('myconn','select * from mytable') as t(a int, b text, c text) where a>xx ;

使用dblink最方便的方法是建立乙個檢視view。這樣在查詢遠端資料表的時候就不用再一次輸入以上資訊了。比如:

create view myremote_table as select * from dblink('myconn','select * from mytable') as t(a int, b text, c text) ;

select * from myremote_table where a>xx ;

5、dblink_exec

執行乙個不返回行的遠端命令,比如insert into語句 。

select dblink_exec('myconn', 'insert into mytable values(21,''z'','''');');

6、dblink_open、dblink_fetch和dblink_close

dblink_open:執行乙個遠端的命令,但是不顯示,可以用之後的dblink_fetch()或者dblink_close()來操作。

dblink_fetch:返回之前用dblink_open執行命令的結果。

dblink_close:關閉之前用dblink_open執行命令的結果 。

select dblink_open('myconn','foo', 'select proname, prosrc from pg_proc where proname like ''bytea%''');

select * from dblink_fetch('myconn','foo', 5) as (funcname name, source text);

select * from dblink_close('myconn','foo') ;

dblink_fetch中的5表示我一次只取乙個結果,如果查詢結果超過5個,那麼再一次執行以上的dblink_fetch語句又可以取到剩下的內容,只到出現(0 rows) 。

7、dblink_error_message

得到最後出現錯誤的資訊提示。select dblink_error_message('myconn');

8、dblink_send_query、dblink_is_busy、dblink_get_notify和dblink_get_result

這幾個命令只前面的用法差不多,主要區別是執行非同步的遠端命令。比如:

contrib_regression=# select dblink_connect('dtest1', 'dbname=contrib_regression');

dblink_connect

----------------

ok(1 row)

contrib_regression=# select * from

contrib_regression-# dblink_send_query('dtest1', 'select * from foo where f1 < 3') as t1;

t1----

1(1 row)

contrib_regression=# select * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text);

f1 | f2 | f3

----+----+------------

0 | a |

1 | b |

2 | c |

(3 rows)

contrib_regression=# select * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text);

f1 | f2 | f3

----+----+----

(0 rows)

官方參考文件:

DB2備份還原中常用的sql語句

初始化環境 0.啟動 db2start 1.cmd 環境下輸入 db2cmd 新開啟db2 操作視窗 2.連線資料庫 db2 connect to db name 3.在本地主機備份語句 db2 backup database db name to d 備份成功得到備份映像的時間戳 4.在該環境下建...

postgreSQL常用函式

select coalesce sum duration 0 若sum duration 返回值為空,則為其賦值0 select to date 2013 12 20 yyyy mm dd 字串轉化為date型別 select date 2013 10 28 01 00 interval 50 mi...

常用postgresql命令

1.初始化postgresql資料庫 方法1 usr pgsql 9.4 bin initdb d opt pgsql data 方法2 sudo service postgresql initdb 2.啟動postgresql服務 sudo service postgresql start sta...