postgres_fdw 实现跨库远程数据操控

背景:

              两个不同库之间相互访问表数据时,正常情况下难以做到。简单的使用场景就是报表库与应用库的交互。

       比如,现在要查询A库下的user表,与B库下的dept表,怎么做关联查询呢!结果是没法做到的。

      所以需要在目标库中做一个远程映射表。

解释:

       1. 服务器A库(目标数据库)中有 user表,需要这里做查询user表对应的部门数据

        2.服务器B库(源数据库)中有 dept表,做为供数使用。

这里需要在目标数据库A中创建连接,将源数据库B中的表映射到A库中,这样A库就可以访问B库的数据了。

一.安装fdw扩展

 create extension postgres_fdw;

查询postgres的所有拓展,验证fdw安装成功:

 select * from pg_available_extensions; 

二、创建远程服务,在目标库中创建连接

  CREATE SERVER b_server_11_ml
        FOREIGN DATA WRAPPER postgres_fdw
        OPTIONS (host '192.168.200.18', port '5432', dbname 'ais_ml',updatable 'true');

 

CREATE USER MAPPING FOR postgres
        SERVER b_server_11_ml
        OPTIONS (user 'postgres', password '123');

  解释: b_server_11_ml:连接名,'192.168.200.18':数据库所在服务器地址,'5432':数据库端口,'ais_ml':数据库名称

user 'postgres':用户名为postgres, password '123':密码为123。

 

三、导入远程表模型

IMPORT FOREIGN SCHEMA "public" LIMIT TO (
  dept_1,dept_2
)FROM SERVER b_server_11_ml INTO public;

 

解释:SCHEMA "public":public 指的是源库B所在的SCHEMA。

           dept_1,dept_2:指源库B中需要映射的表,多个时使用 ’,‘ 隔开。

          b_server_11_ml INTO public:b_server_11_ml指连接名称,public指需要将表映射到目标库B中的SCHEMA

完成后就可以在目标库A中查看到来自源库B中表了,这时就可以做你想要的数据查询了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值