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

  • 安装dblink  
      安装方式自行百度(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);
    --如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
    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);

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

     select * from people_nikename_view 

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

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

PostgreSql 使用dblink跨库的更多相关文章

  1. oracle使用dblink跨库查询的例子

    本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下.   oracle dblink跨库查询 方法一:首先,创建数据库链接: 复制 ...

  2. Postgresql ODBC驱动,用sqlserver添加dblink跨库访问postgresql数据库

    在同样是SQLserver数据库跨库访问时,只需要以下方法 declare @rowcount int set @rowcount =(select COUNT(*) from sys.servers ...

  3. PostgreSQL的 fdw 跨库使用

    create extension postgres_fdw; ',dbname 'postgres'); create user mapping for android_market server s ...

  4. postgresql 模式与用户,及跨库访问

    1 控制台命令\h:查看SQL命令的解释,比如\h select.\?:查看psql命令列表.\l:列出所有数据库.\c [database_name]:连接其他数据库.\d:列出当前数据库的所有表格 ...

  5. 如何玩转跨库Join?跨数据库实例查询应用实践

    背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求.原本在同一数据库实例里就能实现的SQL查询,现在需要跨多 ...

  6. Oracle 跨库 查询 复制表数据 分布式查询

    方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...

  7. FreeSql 如何实现 Sqlite 跨库查询

    FreeSql 是 .NetFramework 4.6+..NetCore 下的 ORM 功能库,提供了丰富的功能,支持五种流行数据库 MySql/SqlServer/PostgreSQL/Oracl ...

  8. oracle跨库连接查询

    一.授权(本地客户器端授权当前用户) grant create database link to szfile 第一种连接方法:配置本地数据库服务器的tnsnames.ora文件 SZFILE = ( ...

  9. mysql跨库联表查询

    首先要了解database与instance区别,见<MySQL中的实例.数据库关系简介> 跨库分为同一个instance下的跨库和不同instance下的跨库. 一.同一个MySQL实例 ...

随机推荐

  1. Vlan 原理

    VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由 ...

  2. redis两种持久化方法对比分析

    1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...

  3. oracle批量插入测试数据

    做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法.产生测试数据的SQ ...

  4. Boyer-Moore(BM)算法,文本查找,字符串匹配问题

    KMP算法的时间复杂度是O(m + n),而Boyer-Moore算法的时间复杂度是O(n/m).文本查找中“ctrl + f”一般就是采用的BM算法. Boyer-Moore算法的关键点: 从右遍历 ...

  5. SIMATIC_STEP_V5.6使用报错

    SIMATIC_STEP_V5.6是西门子出来的一款能够在Windows 10上运行的step 7软件. 正常的安装步骤我们可以在百度上面进行一些查找,在这里我将我遇到的一个问题发出来. 在Windo ...

  6. WPF 定义Command

    直接上代码: public class LoginDelegateCommand : ICommand { private Action _execute; private Predicate< ...

  7. JavaScript的数据类型问题总结

    一    JS中有哪些数据类型? -- 共 6 种数据类型,其中 5 种基本数据类型Undefined,Null,Boolean,Number和 String,1 种复杂数据类型Object.因为EC ...

  8. 常见js特效的思路

    1.焦点轮播路 1.布局:父容器用overflow:hidden隐藏多余的图片 2:通过ID获取到重要的元素(父容器.图片列表.左右切换按钮等) 给左右按钮加上点击事件,通过JS更新图片的位置,判断边 ...

  9. Android 框架练成 教你打造高效的图片加载框架

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41874561,本文出自:[张鸿洋的博客] 1.概述 优秀的图片加载框架不要太多, ...

  10. linux下安装python3.6.4

    想在阿里云端装一个 python36,因为自带的python2有点老 ,(centos系统) 当然你如果选择的乌班图系统的话就自带了python3,就不用看了 于是查找资料,但是一步一步的来总是不行, ...