Postgresql 跨库同步表,postgres_fdw的使用

postgres_fdw模块
PostgreSQL 9.3 add postgres_fdw extension for accessing remote tables 
PostgreSQL 9.3新增了一个postgres_fdw模块, 已经整合在源码包中. 用于创建postgres外部表.

注:db_des为目标库,developer_month_orders_data为表名。意思就是从查询库a中建立同名FOREIGN关联表,
可以查询目标库中的数据。以下命令在需要建立的关联库中执行。
目标库中的表必须存在,也就是先建立好,否则从a库,查询会报找不到表错误
阿里云RDS,数据库:PostgreSQL 9.4,跨实例数据库不支持postgres_fdw建立外部表,坑啊!
阿里云技术回复RDS需要10.0版本的 postgresql才支持跨实例。不然只能同一个实例下的不同数据库之间的外部表。


-- 安装 postgres_fdw 插件 
CREATE EXTENSION postgres_fdw;

-- 创建远程服务 
CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw;

-- 查看远程服务
select * from pg_foreign_server ;

-- 修改远程服务 
alter server remote_server options (add hostaddr '11.216.10.215', 
                          add port '5432', add dbname 'db_des');

-- SERVER赋权 
grant usage on foreign server remote_server to postgres;

-- 在本地数据库中创建user mapping 
CREATE USER MAPPING FOR postgres server remote_server options (user 'postgres', password 'xxxxx');

-- 同样创建枚举
CREATE TYPE db_enum AS ENUM ('postgres', 'sqlserver', 'mysql');

-- 查看枚举类型的oid 
select oid from pg_type where typname='db_enum';

-- 创建外部表developer_month_orders_data
CREATE FOREIGN TABLE developer_month_orders_data(
   id integer not null,
   developer_user_id integer,
   package_id integer,
   order_month date,
   create_datetime timestamp
) SERVER remote_server options (schema_name 'public',table_name 'developer_month_orders_data');

-- 查看外部表 
select * from developer_month_orders_data;
ddl维护操作:

drop user mapping for postgres server server_remote ;

drop server server_remote;

drop extension postgres_fdw ;

drop foreign table test1;

 

你可能感兴趣的:(Postgresql)