FDW简介
FDW(Foreign Data Wrapper)是postgresql的一个插件。通过FDW,可以将远程pg数据库映射到本地(映射为server),将远程数据库table映射为本地的foreign table。通过FDW映射的foreign table,实际数据只存在于远端数据库,本地并不实际存储实际的数据库。读写foreign table会映射为读写远程数据库对应的table。最初本地只支持foreign table只读操作,从PG9.3版本开始,支持本地写入foreign table。
完整操作SQL
--安装扩展
create extension IF NOT EXISTS postgres_fdw;
--验证扩展
select * from pg_available_extensions where name='postgres_fdw';
--创建 server
create server server_remote_pg2pg foreign data wrapper postgres_fdw options(host '192.168.1.11',port '5432',dbname 'my');
--创建用户映射
create user mapping for postgres server server_remote_pg2pg options(user 'postgres', password '1234');
--验证
select * from pg_foreign_server;
--创建外部表
create foreign table tb_fdw_foreign(shi varchar,geom geometry(MULTIPOLYGON, 4490)) server server_remote_pg2pg options(schema_name 'dataimporttest',table_name 'shi');
create foreign table tb_fdw_foreign(SHI VARCHAR,geom GEOMETRY(MULTIPOLYGON, 4490)) server server_remote_pg2pg options(schema_name 'dataimporttest',table_name 'SHI');
select * from tb_fdw_foreign;
--操作外部表
INSERT into tb_fdw_foreign(shi,geom) SELECT shi,geom from jxlcs_yw.yjjc_pdtb;
INSERT into tb_fdw_foreign(SHI,geom) SELECT SHI,geom from jxlcs_yw.yjjc_hstb_py;
--删除外部表
drop foreign table tb_fdw_foreign;
--删除用户映射
drop user mapping for postgres server server_remote_pg2pg;
--删除 server
drop server server_remote_pg2pg;
--删除扩展
drop extension postgres_fdw;