• 通过postgres_fdw实现跨库访问


    瀚高数据库
    目录
    文档用途
    详细信息

    介绍Postgresql跨库访问中postgres_fdw的使用方法

    详细信息
    PostgreSQL 外部数据包装器,即 PostgreSQL Foreign Data Wrappers,是现实数据库使用场景中一个非常实用的功能,PostgreSQL 的 FDW 类似于 Oracle 的 dblink,DB2 的 Federation,使用其可以将本地数据库与外部数据库建立连接,从而可以像操作本地数据一样来操作外部数据。

    postgrs_fdw是PostgreSQL 外部数据包装器中的一种,可用于访问储存在外部postgresql数据库的数据。

    使用步骤如下:

    1、使用 CREATE EXTENSION 来安装 postgres_fdw扩展。

    2、使用 CREATE SERVER 创建一个外部服务器对象,它用来表示你想连接的每一个远程数据库。指定除了 user 和 password 之外的连接信息作为该服务器对象的选项。

    3、使用 CREATE USER MAPPING 创建一个用户映射,每一个用户映射都代表你想允许一个数据库用户访问一个外部服务器。指定远程用户名和口令作为用户映射的 user 和 password 选项。

    4、为每一个你想访问的远程表使用 CREATE FOREIGN TABLE 或者 IMPORT FOREIGN SCHEMA 创建一个外部表。外部表的列必须匹配被引用的远程表。但是,如果你在外部表对象的选项中指定了正确的远程名称,你可以使用不同于远程表的表名和/或列名。

    示例

    1、在数据库A创建测试表添加测试数据。

    create table table1 (id int, crt_Time timestamp, info text, c1 int);
    
    • 1

    在这里插入图片描述

    insert into table1 select generate_series(1,1000000), clock_timestamp(), md5(random()::text), random()*1000;
    
    • 1

    在这里插入图片描述

    查看插入数据量

    在这里插入图片描述

    2、数据库B查看表并创建扩展
    在这里插入图片描述

    在这里插入图片描述

    查看扩展创建情况
    在这里插入图片描述

    3、通过fdw创建外联服务

    CREATE SERVER table1 
    
             FOREIGN DATA WRAPPER postgres_fdw 
    
             OPTIONS (host '192.168.80.131', port '5432', dbname 'postgres');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    4、创建外联用户信息

    CREATE USER MAPPING FOR postgres 
    
     SERVER table1 
    
     OPTIONS (user 'postgres', password 'highgo@123');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    5、查看外联服务

    在这里插入图片描述

    6、将数据库A模式中的所有表在数据库B中创建外联表

    在这里插入图片描述

    查看数据库B的外联表
    在这里插入图片描述

    在这里插入图片描述

    7、创建单个外联表

    CREATE FOREIGN TABLE table2 ( 
    
        id int, crt_Time timestamp, info text, c1 int)  
    
              SERVER table1 
    
            OPTIONS (schema_name 'public', table_name 'table1');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看数据库B的外联表
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    CentOS 7 使用pugixml 库
    phpstorm不提示$this->request,不提示Controller父类的方法
    Kaggle比赛—预测 DNA、RNA 和蛋白质测量如何在单细胞中共同变化
    扩散模型实战(九):使用CLIP模型引导和控制扩散模型
    Electron常见问题 62 - Electron配置私有化sentry的方法
    【星海出品】C++的基础(一)理论知识
    Go语言第二篇-基本数据类型与转义字符
    Keepalived+HAProxy基于ACL实现单IP多域名负载功能
    四化智造MES(WEB)和金蝶云星空接口打通对接实战
    zabbix监控华为路由器
  • 原文地址:https://blog.csdn.net/pg_hgdb/article/details/128188110