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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pg_ctl 名称 pg_ctl -- 启动、停止、重启 PostgreSQL语法 pg_ctl start [-...
    老肖阅读 986评论 0 0
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,452评论 0 9
  • 一、什么是PostgreSQL? PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。...
    超天大圣JR阅读 1,547评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 我叫勇度,就是《银河护卫队》里面蓝皮肤红眼睛的盗猎者。 几十年前,我还是半人马星上的土著居民,那时候银河系还没有我...
    迷途的时一阅读 626评论 4 1