postgresql实现跨库查询-dblink的妙用

技术导语: 用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。

安装contrib包

rpm -ivh postgresql10-contrib-10.4-1PGDG.rhel7.x86_64  --nodeps --force

安装完成后发现/usr/pgsql-10/lib下创建了dblink.so文件

创建db_link

create extension dblink;  #创建dblink相关函数
select * from pg_extension; #结果可以查看到创建的dblink对象信息。

实现跨库查询

select *  from dblink('hostaddr=192.168.0.100 port=5432 dbname=db1 user=postgres password=postgres', 'SELECT count(*) cnt From schema1.table1')
AS t(id int);

【知识点】

  1. dblink函数:返回值为表对象,因此可以使用select * from 输出结果;
  2. dblink函数入参:包括两部分,远程库连接信息和操作sql(可联表查询)。
  3. 关键字AS:用于重定义返回内容的表名、字段名及类型,表名、字段名可以根据需求任意定义,字段类型必须保证与返回结果匹配,比如返回的第一个字段为int类型,AS却重定义为string,那么就会报错。

创建dblink视图

当然每次跨库查询都要输入一大段脚本是极其不方便的,因此更常见的用法是创建视图。

create view v_result as 
select *  from dblink('hostaddr=192.168.0.100 port=5432 dbname=db1 user=postgres password=postgres', 'SELECT count(*) cnt From schema1.table1')
AS t(id int);

select * from v_result;

如果您喜欢我的文章,请关注我。后续会有更多精彩内容推荐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值