此篇介绍下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. Struts2中数据封装方式

    一.通过ActionContext类获取 public class ActionContextDemo extends ActionSupport {    @Override    public S ...

  2. PAT1027:Colors In Mars

    1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...

  3. posix,perl正则表达式区别

    1.正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式.正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用来描述或者匹配一系列符合 ...

  4. python函数注释, :与 ->

    python函数注释, :与 -> 如图:add1函数中的:意思是:函数中的参数说明    add2函数中:->意思是:函数的返回值为整型 这两种方法都是函数的注释方法,具体使用时要别人能 ...

  5. Sublime text使用快捷键

    作者:gyfnice链接:https://www.zhihu.com/question/24896283/answer/34327939来源:知乎著作权归作者所有,转载请联系作者获得授权. 代码片段 ...

  6. kafka实战

    1.       kafka介绍 1.1.       主要功能 根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能: 1:It lets you publish and ...

  7. TestNG进行接口测试,脚本及可维护性框架

    注: 以下内容引自http://blog.csdn.net/u010321474/article/details/49977969 TestNG进行接口测试,脚本及可维护性框架 原创 2015年11月 ...

  8. JAXBContextAPI详解

    javax.xml.bind类 JAXBContext java.lang.Object javax.xml.bind.JAXBContext public abstract class JAXBCo ...

  9. 在MFC中通过访问IP地址下载文件到本地

    void CDownLoad::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CDialogEx::OnOK(); UpdateData(TRUE); CStri ...

  10. 面试必问!Java 多线程中两个线程交替执行,一个输出偶数,一个输出奇数

    前言 楼主今天在面经上看到这个题,挺有意思,小小的题目对多线程的考量还挺多.大部分同学都会使用 synchronized 来实现.楼主今天带来另外两种优化实现,让你面试的时候,傲视群雄! 第一种 sy ...