技术导语: 用惯了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);
【知识点】
- dblink函数:返回值为表对象,因此可以使用select * from 输出结果;
- dblink函数入参:包括两部分,远程库连接信息和操作sql(可联表查询)。
- 关键字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;
如果您喜欢我的文章,请关注我。后续会有更多精彩内容推荐。