--创建该数据源的FDW对象 CREATEFOREIGN DATAWRAPPER mysql_fdw; --DROP FOREIGN DATA WRAPPER mysql_fdw;
使用
1.创建该数据源的服务器对象
--创建服务连接信息 CREATE SERVER erp_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '172.16.0.70', port '3306'); --DROP SERVER erp_server;
--建立用户映射 `bitest`当前pg用户,`rwbj`外部数据源用户 CREATE USER MAPPING FOR bitest SERVER erp_server OPTIONS (username 'rwbj', password '22eaa714ae0b49e09808233f3d3d6212');
--DROP USER MAPPING FOR bitest SERVER erp_server
2. 创建外部表(三种方式)
--创建外部数据表(指定字段) CREATE FOREIGN TABLE erp_contract (id bigint) server erp_server options (dbname 'erp', table_name 'erp_contract');
--除了指定字段创建外部表以外,还可以直接导入指定表的所有字段 import foreign schema erp limit to (erp_rent_shop,erp_sys_user) from server erp_server into bi;
-- 以及,一次性导入指定DB下的所有表 import foreign schema erp from server erp_server into bi;
-- 或者构造sql语句批量删除 select 'drop foreign table ' || t.table_schema || '.' || t.table_name || ';'as drop_sql from information_schema.tables t where t.table_type in ('FOREIGN') and t.table_schema in ('bi');
--创建物化视图 CREATEMATERIALIZEDVIEW erp_contract_view asselect * from erp_contract; --定期刷新物化视图 REFRESHMATERIALIZEDVIEW erp_contract_view;
也可以创建pg本地表来对第三方数据源的数据进行定期增量同步:
--创建pg本地表 CREATETABLE erp_contract_t asselect * from erp_contract; --同步数据 DELETE FROM erp_contract_t t WHEREEXISTS(SELECT1FROM erp_contract f WHERE t.id = f.id); INSERTINTO erp_contract_t SELECT * FROM erp_contract;