• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 postgres_fdw 跨库查询

    1 安装扩展

    create extension postgres_fdw;

    2 本地创建server并查看 该server作用是在本地配置一个连接远程的信息,下面的配置是要连接到远程DB名称是postgres数据库

    create server server_remote_rudy_01 foreign data wrapper postgres_fdw options(host ‘192.168.11.44',port ‘5432',dbname ‘vsphere_info');

    查询:

    select * from pg_foreign_server ;**
    

    3 创建用户匹配信息并查看,在本地

    for后面的postgres是本地登录执行的用户名,option里存储的是远程的用户密码

    create user mapping for postgres server server_remote_rudy_01 options(user ‘vsphere',password ‘viadmin');

    4 本地创建外部表,指定server

    CREATE FOREIGN TABLE v1_cost(sample_time TIMESTAMP,datacenter_id int4,host_id int4 ,cost NUMERIC) server server_remote_rudy_01 options (schema_name ‘public',table_name ‘vi_cost');

    5 –导入指定的表,也可以不导入指定的表,也可以导入整个schema下面的表(可有可无的一步)

    IMPORT FOREIGN SCHEMA public FROM SERVER server_remote_rudy_01 INTO public;
    IMPORT FOREIGN SCHEMA public limit to(t1) FROM SERVER server_remote_rudy_01 INTO public;

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • PostgreSQL中使用dblink实现跨库查询的方法
    • PostgreSQL数据库中跨库访问解决方案
    • PostgreSQL 流复制异步转同步的操作
    • PostgreSQL中Slony-I同步复制部署教程
    上一篇:postgresql表死锁问题的排查方式
    下一篇:PostgreSQL 数据同步到ES 搭建操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Postgresql 跨库同步表及postgres_fdw的用法说明 Postgresql,跨库,同步,表,及,