这周postgresql发布了9.3正式版,该版别包含可写的外部数据封装、数据页checksums、快速的毛病搬运以及streaming-onlyremastering等等。很侥幸,公司第一时间让我试下外部数据分装可写的这个功用。本来postgresql9供给可长途读取数据库的功用,现在正是参加长途可写。所以经过fdw(ForeignDataWrappers),简略讲能够让咱们在本地数据库操作长途数据库了。这和之前介绍的dblink有相似之处,可是fdw供给更多通明和规范的语法,并且功能也比dblink好。
第一步:装置postgres_fdw扩展
postgres=#createextensionpostgres_fdw;
假如提示CREATEEXTENSION,阐明装置成功。
第二步:创立长途数据库服务器
//先在长途数据库vm05中新建数据库zhang和数据表world。
postgres=#createdatabasezhang;
postgres=#czhang
zhang=#createtableworld(greetingtext);
//然后psql登陆本地数据库创立vm05-zhang
postgres=#createservervm05_zhangforeigndatawrapperpostgres_fdwoptions(host'192.168.0.235',dbname'络营销渠道"zhang',port'3500');
createserver指令语法:
CREATESERVERserver_name[TYPE'server_type'][VERSION'server_version']FOREIGNDATAWRAPPERfdw_name[OPTIONS(option'value'[,...])]
server_name:长途数据库的称号,在一个数据库中有必要是仅有的。
server_type、server_version:可选,可能对一些外部数据封装有用。
fdw_name:外部数据分装姓名,这儿咱们是postgres_fdw。
options:其他可选参数,包含数据库地址,数据库称号和端口等。
第三步:创立映射用户
CREATEUSERMAPPING指定衔接长途数据库的用户,这些数据和创立的foreignserver长途服务器一同被封装起来。具有foreignserver权限的用户能够创立映射用户。
postgres=#createusermappingFORPUBLICservervm05_zhangoptions(password'xxx'搜索引擎优化公司");
createusermapping指令语法:
CREATEUSERMAPPINGFOR{user_name|USER|CURRENT_USER|PUBLIC}
SERVERserver_name
[OPTIONS(option'value'[,...])]
user_name:现有的用户映射到长途server。USER和CURRENT_USER匹配当时的用户,没有特定用户可用就能够挑选PUBLIC。
server_name:当时需求用户映射到的长途数据库服务器名,第二步现已创立。
options:其他可选像,包含用户名、暗码等。
例如:CREATEUSERMAPPINGFORbobSERVERfooOPTIONS(user‘bob’,password‘secret’);
第四步:创立长途表
这儿需求留意,创立表的列要和长途表的列要匹配,类型最好是相同。长途表的列能够少些,次序能够不重要,由于fdw是依据姓名来匹配的。
postgres=#createforeigntablevm05_world(greetingtext)servervm05_zhangoptions(table_name'world');
第五步:检查作用
//在vm05_world表中刺进三条数据
postgres=#insertintovm05_worldvalues('Takemetoyourleader');
postgres=#insertintovm05_worldvalues('Takemetoyourleader.........');
postgres=#insertintovm05_worldvalues('HelloWorld!!!!!'新闻源");
//检查vm05_world表中数据
postgres=#select*fromvm05_world;
greeting
---------------------------------
Takemetoyourleader
Takemetoyourleader.........
HelloWorld!!!!!
(3rows)
//其实这个是在vm05这台服务器上,咱们登陆vm05检查是否有数据。
zhang=#select*fromworld;
greeting
---------------------------------
Takemetoyourleader
Takemetoyourleader.........
HelloWorld!!!!!
(3rows)
能够看到刺进数据成功,当然咱们也能够在update和deletefrom表vm05_world,假如映射的用户有这个权限的话。
至此postgres_fdw外部数据封装可写正式测验完结,关于操作多张表很有用。总结的比较浅显,还有不明白的能够参阅postgresql的官方文档:
;
内容来自:络推行蜓云tingclouds