PostgreSql 使用dblink跨库

此篇介绍下psql下dblink的使用方式,帮助自己记录以备后需。dblink是psql下的扩展功能,可以实现在一个数据库中远程操作另外一个数据库,是实现跨库的一种方法。下面步入正文。

  • 安装dblink
rpm -ivh postgresql10-contrib-10.4-1PGDG.rhel7.x86_64  --nodeps --force

(psql数据库默认是安装了的,可先在服务器上查看),安装完后$PGHOME下的lib下就有个dblink.so文件
  

  • 先安装扩展  
  • create extension dblink;
    

     安装完后函数里有了扩展函数。

     --查看pgsql数据库已安装的扩展
     select * from pg_extension;
    
    • 使用方式
    --常规使用
    select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
    --如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
     - 先执行dblink_connect保持连接
     SELECT dblink_connect('mycoon','hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456');
     - 执行BEGIN命令
     SELECT dblink_exec('mycoon', 'BEGIN');
     - 执行数据操作(updateinsertcreate等命令)
     SELECT dblink_exec('mycoon', 'insert into tb1 select generate_series(10,20),''hello''');
     SELECT dblink_exec('mycoon', 'insert into people(username,nikename) values ("张三","小三") ');
     - 执行事务提交
     SELECT dblink_exec('mycoon', 'COMMIT');
     - 解除连接
     SELECT dblink_disconnect('mycoon');
    
    • dblink配合视图view使用,毕竟每次写dblink有点多余
    CREATE VIEW people_nikename_view AS 
    select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
    

     这样以后就可以查视图view了

    select * from people_nikename_view 
    

     建议:psql下表名 字段名这些尽量用小写

    优势
    这样解决了psql数据库跨库问题,用DBLINK方便快捷简单,事务性处理 一次可以对其他数据库进行多种操作。当然你也可以在程序里面对2个数据库单独取值再进行处理,这样开发效率和并发下性能以及查询效率都不理想的,能简则简吧。
      

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值