postgresql中dblink扩展的功能是可以在一个数据库中操作另外一个远程数据库。比如:一个数据库在中国北京,另外一台数据库在中国上海,我可以在北京这台数据库上面建立一个到上海数据库的dblink,然后可以在北京这台数据库上面对上海的数据库进行query或者update或者delete。
dblink的安装:章郎虫这里安装的是postgresql 9.2版本,psql进入数据库后运行create extension dblink就可以了。
dblink的使用:
1、dblink_connect
这个命令主要作用是建立一个到远程数据库的连接,比如
select dblink_connect(\'myconn\', \'host=xxx.xxx.xxx.xxx port=xx dbname=postgres user=myname password=mypassword\');myconn表示连接名称,可以不写,不过建议还是写下连接名称。
2、dblink_disconnect
断开远程数据库连接,比如
select dblink_disconnect(\'myconn\') ;3、dblink_get_connections
查看当前的远程连接,直接select?dblink_get_connections() ;就可以看到连接,如果{‘myconn’} 。
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\'\',\'\'{"a0","b0","c0"}\'\');\');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 | {a0,b0,c0} 1 | b | {a1,b1,c1} 2 | c | {a2,b2,c2} (3 rows)contrib_regression=# select * from dblink_get_result(\'dtest1\') as t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ---- ---- ---- (0 rows)官方参考文档:http://www.postgresql.org/docs/9.2/interactive/dblink.html
小程序可以注册几个如何查询一个网站的域名备案信息?好的阿里云服务器多少钱一年用pc做云服务器配置补备案资料-备案平台学生租用阿里云服务器多少钱营销型企业网站建设哪家好新买的云服务器远程无法联网