1.扩展插件
create extension postgres_fdw;
2.远程数据库服务器
1)创建
create server inter_data FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
HOST '192.168.20.46',
dbname 'inter_data',
port '5432'
);
2)删除
drop SERVER inter_data
3.映射用户
1)创建
create user mapping FOR PUBLIC server inter_data options(user 'postgres',password 'postgres');
2)删除
DROP user mapping FOR PUBLIC server inter_data
4.远程表
1)创建
CREATE FOREIGN TABLE public.hangzhou_node (
node_id VARCHAR (50),
node_name VARCHAR (50),
create_time TIMESTAMP (6),
create_userid VARCHAR (30),
geom geometry,
node_type VARCHAR (10)
) SERVER inter_data OPTIONS (
SCHEMA_NAME 'public',
TABLE_NAME 'hangzhou_node'
);
2)删除
DROP FOREIGN TABLE hangzhou_node
5.验证
在inter_data中的表进行修改,对应的复制表数据也发生修改
SELECT * FROM hangzhou_node where node_id='0053ca999962a03638537ddbaf9346f2'
总结:
1.在数据迁移或者ETL及定时刷新上面会比较有。
2.外部表实际不占存储空间。
3.物理表和外部表不能同名,因为pg_class的对象名称唯一键的缘故。
与dblink比较
4.配置postgres_fdw更简单,而且也支持远程更新。
5.运行数据量大的sql不易丢失。
6.脚本运行中dblink需要 建立连接->处理->关闭连接 的过程。
网友评论