Postgresql:使用postgres_fdw实现数据跨库查询

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需要 建立连接->处理->关闭连接 的过程。

你可能感兴趣的:(Postgresql:使用postgres_fdw实现数据跨库查询)