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!

  • 相关阅读:
    WUSTOJ 1279: Wallace and His Pet(Java)
    WUSTOJ 1235: 计算矩阵的鞍点(Java)
    WUSTOJ 1277: 小吉吉读书(Java)
    WUSTOJ 1276: 峰峰不搞G(Java)
    WUSTOJ 1275: 男神的逆袭(Java)
    WUSTOJ 1274: 喂,这里是帅帅的LCM(Java)
    1269: 划分数(Java)
    1267: 展开字符串(Java)
    1266: gcd和lcm(Java)
    微型计算机接口技术与汇编语言课后答案
  • 原文地址:https://www.cnblogs.com/binw/p/PostgreSQL.html
Copyright © 2011-2022 走看看