postgres_fdw(PostgreSQL Foreign Data Wrappers),是PostgreSQL 外部数据包装器,类似于 Oracle 的 dblink,DB2 的 Federation,使用其可以将本地数据库与外部数据库建立连接,从而可以像操作本地数据一样来操作远程数据库中的数据。
安装使用
1.安装 postgres_fdw 插件
在DB管理工具中(比如:navicat)执行一下语句:
create extension postgres_fdw;
执行后出现‘“ok”表示安装成功。
2.创建一个外部服务器
使用 CREATE SERVER 语句创建外部服务器,需要指定远程数据库的主机、端口及数据库名。
create server server_XXX(起一个服务名)
foreign data wrapper postgres_fdw options(
host 'XXX.XXX.XXX.XXX',
port 'XXXX',
dbname 'XXX'
);
3.创建用户映射
使用 CREATE USER MAPPING
语句创建本地用户与远程用户的映射,在 options 中指定远程数据库的用户名和密码。
create user mapping for XXX (本地的数据库用户)
server server_XXX(第2步中创建的服务名)
options(
user 'XXX', -- 远程数据库用户名
password 'XXX' -- 远程数据库密码
);
4.创建外部表
使用 CREATE FOREIGN TABLE 语句创建外部表,在 options 中指定远程数据库的库名和表名。
要注意外部表的字段名称&类型最好和远程表的字段名称&类型保持一致,否则需要使用column_name参数为每一列单独指定远程据库表中的列名。
CREATE FOREIGN TABLE XXX.table_name(起一个表名)(
"row_id" varchar COLLATE "pg_catalog"."default" NOT NULL,
"name" varchar COLLATE "pg_catalog"."default" NOT NULL,
"age" int4,
···
) server server_XXX(第2步中创建的服务名)
options (
schema_name 'XXX', -- 远程数据库的库名
table_name 'XXX' -- 远程数据库的表名
);
到此齐活,执行完以上步骤你会发现你的'XXX'数据库(第4步中创建外部表时指定的库名)里多了一张表,然后就可以像操作本地表一样操作这张外部表(增、删、改、查),同时对应远程表中的数据会由于你的操作发生变化。
5.扩展
查询安装过的数据库扩展插件:
select * from pg_extension;
清理扩展插件:
drop extension postgres_fdw ;
清理上面步骤创建的外部表、用户映射、服务:
drop foreign table XXX;
drop user mapping for XXX(第3步中指定的本地的数据库的用户)
server server_XXX; -- 创建的服务名
drop server server_XXX; -- 创建的服务名
版权声明:本文为IWinds原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。