• PostgreSql 使用dblink跨库


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

    • 安装dblink  
        安装方式自行百度(psql数据库默认是安装了的,可先在服务器上查看),安装完后$PGHOME下的lib下就有个dblink.so文件
        
    • 先安装扩展  
      create extension dblink;

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

      1 --查看pgsql数据库已安装的扩展
      2 select * from pg_extension;
    • 使用方式

       1 --常规使用
       2 select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
       3 --如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
       4 1. 先执行dblink_connect保持连接
       5  SELECT dblink_connect('mycoon','hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456');  
       6 2. 执行BEGIN命令
       7  SELECT dblink_exec('mycoon', 'BEGIN');
       8 3. 执行数据操作(updateinsert,create等命令)
       9  SELECT dblink_exec('mycoon', 'insert into tb1 select generate_series(10,20),''hello''');
      10  SELECT dblink_exec('mycoon', 'insert into people(username,nikename) values ("张三","小三") ');
      11 4. 执行事务提交
      12  SELECT dblink_exec('mycoon', 'COMMIT');
      13 5. 解除连接
      14  SELECT dblink_disconnect('mycoon');
    • dblink配合视图view使用,毕竟每次写dblink有点多余
      1 CREATE VIEW people_nikename_view AS 
      2 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了

      1 select * from people_nikename_view 

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

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

  • 相关阅读:
    Backbone Events 源码笔记
    IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析
    Orchard 与 ABP架构比较 (aspnetboilerplate)
    Orchard EventBus 事件总线及 IEventHandler作用
    Orchard 事件通知小坑
    推荐一个国内编程语言排名网站
    po_文件格式[转]
    关于poedit打开po文件乱码的问题
    JAVA和.NET工作流相关项目收集
    php里的二进制安全
  • 原文地址:https://www.cnblogs.com/CDLinXi/p/10510769.html
Copyright © 2020-2023  润新知