zoukankan      html  css  js  c++  java
  • PostgreSQL dblink

    由于postgresql 数据库中,跨库查询不能像SQL server一样直接dbname.table 调用将多个库的不同表join一起查询。

    因此想到了SQL server中的link server的方式,在postgresql数据库中可以使用dblin的方式实现。

    1. 安装dblink

    一般数据库安装时即默认安装了此模块,没有安装的可百度安装方法。

    2.安装扩展

    create extension dblink;

    使用以上语句可以在当前库安装dblink扩展组件。

    安装完成后可以用如下语句查询扩展信息,如果显示有dblink 即表示已有扩展。

    select * from pg_extension;

    注意安装扩展的schema,在调用的时候不在同一个schema下会提示dblink不存在,可通过如下sql查看dblink安装的schema。

    select nspname as schema
    from pg_extension e
    join pg_namespace n on n.oid = e.extnamespace
    where extname = 'dblink'

    为了方便查询可在修改查询的路径,把常用的schema添加到查询检索中指定sql 执行时的schema范围。

    set search_path to public, split;

    3.使用

    常规使用

    --常规使用
    select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
    --如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
    1. 先执行dblink_connect保持连接
    SELECT dblink_connect('mycoon','hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456');
    2. 执行BEGIN命令
    SELECT dblink_exec('mycoon', 'BEGIN');
    3. 执行数据操作(update,insert,create等命令)
    SELECT dblink_exec('mycoon', 'insert into tb1 select generate_series(10,20),''hello''');
    SELECT dblink_exec('mycoon', 'insert into people(username,nikename) values ("张三","小三") ');
    4. 执行事务提交
    SELECT dblink_exec('mycoon', 'COMMIT');
    5. 解除连接
    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);
    

      

    使用部分参考了 复城大师兄博客,thanks!

  • 相关阅读:
    Springboot中enable注解
    java消息队列--ActiveMQ,RabbitMQ入门
    java中的静态和动态代理Proxy
    java源码中的注解
    java中jdbc源码解读
    sql脚本练习
    spring boot中的jave注解学习
    thymeleaf入门和学习
    职场经验:互联网公司有哪些“潜规则”?职场萌新一定要注意了!
    C/C++编程笔记:C语言错误处理方法!如何更好地处理程序的错误?
  • 原文地址:https://www.cnblogs.com/binw/p/PostgreSQL.html
Copyright © 2011-2022 走看看