在PostgreSQL数据库之间进行跨库操作的方式

dblink

postgres_fdw

本文先说说dblink;dblink是一个支持从数据库会话中连接到其他PostgreSQL数据库的插件。在其他数据库跨库操作也是采用dblink的方式

一、安装dblink

PostgreSQL插件dblink是PostgreSQL安装包自带的;若安装数据库时没有安装dblink插件;可以自行去编译安装。用使用dblink;先要按照dblink扩展;安装完成之后;我们调用dblink函数来实现跨库操作。我们常用的操作是跨库查询。

lottu01=# create extension dblink;

CREATE EXTENSION

二、使用dblink

2.1、创建dblink连接(dblink_connect)

调用dblink_connect函数;创建dblink连接(连接名为lottu);这样我们可以在这个会话中访问lottu数据库中下面的对象。

lottu01=> select dblink_connect('lottu', 'host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu');

dblink_connect

----------------

OK

(1 row)

2.2、跨库查询表(dblink)

使用dblink;我们更多是跨库查询操作;由于上面创建dblink_connect连接;所以我们可以拿来使用。

lottu01=> SELECT * FROM dblink('lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);

id  | info

------+-------

1001 | lottu

(1 row)

我们也可以直接使用;无需先创建dblink_connect。这是常用的方式。

lottu01=> SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);

id  | info

------+-------

1001 | lottu

(1 row)

2.3、跨库执行ddl,dcl操作(dblink_exec)

若我们跨库操作create、insert、update、delete语句;其实这种行为一般不跨库操作。慎用!下面演示下insert操作

lottu01=> SELECT dblink_exec('lottu', 'insert into public.t1 values (1002,''hello'')');

dblink_exec

-------------

INSERT 0 1

(1 row)

# OR

lottu01=> SELECT dblink('lottu', format('insert into public.t1 select %L, %L', 1003, 'lottu'));

dblink

----------------

("INSERT 0 1")

(1 row)

2.4、关闭dblink连接

在PostgreSQL中dblink是会话级别;会话断开即dblink也关闭。当然也可以在会话中手动关闭

lottu01=> SELECT dblink_disconnect('lottu');

dblink_disconnect

-------------------

OK

(1 row)

三、扩展

使用dblink查询;都要带有conn_str;非常不简洁;在会话使用临时表/视图来保存。两种效果不同

到底选择视图/临时表;看你需求;在PostgreSQL中临时表在会话结束后是不会保持的。这样的好处;不使用的话无需去删除对应的临时表

lottu01=> create temp table lottu_t1 as SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);

SELECT 2

lottu01=> select * from lottu_t1;

id  | info

------+-------

1001 | lottu

1002 | hello

(2 rows)

四、应用场景

PostgreSQL使用dblink;存在优势是;即取即用;无须在创建其他对象;下一章节会讲解PostgreSQL_fdw;相比PostgreSQL_fdw优势在此;不足之处;后续补充讲解。

4.1、同步远端库表

在开发工作中;测试数据库需要同步某个(新建/旧的)表的数据;使用dblink非常便捷。

lottu01=> create table public.t1(id int, info text);

CREATE TABLE

lottu01=> insert into public.t1 SELECT * FROM dblink('host=192.168.1.221 port=6000 user=lottu password=li0924 dbname=lottu', 'select id, info from public.t1') as lottu_t1(id int, info text);

INSERT 0 5

lottu01=> select * from public.t1;

id  | info

------+-------

1001 | lottu

1002 | hello

1003 | rax

1004 | rax

1005 | lottu

(5 rows)

更多详情请参见dblink。

pg库使用dblink连接mysql_PG-跨库操作-dblink相关推荐

  1. MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?

    来源:https://www.cnblogs.com/yjmyzz/p/12149737.html 当业务数据达到一定量级(比如:mysql单表记录量>1千万)后,通常会考虑"分库分表 ...

  2. mysql跨库查询 索引_MySQL中跨库查询怎么搞?

    导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...

  3. mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  4. SQL注入—跨库注入

    SQL注入-跨库注入 1.SQL注入-跨库注入 1.1.前言 1.2.跨库注入介绍 2.跨库注入 2.1.跨库注入准备 2.2.跨库注入流程 2.2.1.判断是否为管理员权限 2.2.2.获取数据库下 ...

  5. 在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  6. 事务 跨库事务 分布式事务及解决方案

    什么是事务? 本地事务 事务传播行为: 事务的四大特性 ACID 并发事务产生的问题可以分为4类 事务的隔离级别 什么是分布式事务 分布式涉及到的原理: CAP原理: BASE理论 柔性事务和刚性事务 ...

  7. oracle跨库连接查询

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

  8. 人大金仓Kingbase数据库使用dblink进行跨库操作示例

    参考官网文档:15. dblink - KingbaseES产品手册 业务场景: 现有数据库及用户: db_a,u_a db_b,u_b 想要在db_a连接中,跨库对db_b中的表进行查询等操作 使用 ...

  9. Oracle 跨库查询表数据(不同的数据库间建立连接)

    1.情景展示 当需要从A库去访问B库中的数据时,就需要将这两个库连接起来: 两个数据库如何实现互联互通,在oracle中,可以通过建立DBLINK实现. 2.解决方案 2018/12/05 第一步:创 ...

  10. 因数据迁移导致跨库连接失效的解决办法

    oracle通过imp重新导的数据库,可能跨库连接失效而产生错误,这时就要重新创建连接: 1. 一定注意要删除出错的dplink: 2. 重新创建同名的dplink,注意要是public类型,同名则是 ...

最新文章

  1. java游戏下载ios_java浏览器下载
  2. 「SAP技术」SAP MM 采购信息记录新价格不能体现在采购订单新的ITEM上?
  3. 虚拟服务器至强,用至强解决瓶颈 桌面虚拟化案例分享
  4. golang中的httptest
  5. redis 存储数据不设置过期时间 会自动过期吗_Redis-数据淘汰策略持久化方式(RDB/AOF)Redis与Memcached区别...
  6. 最让人纠结的等式:0.999...=1
  7. c盘清理代码_IntelliJ IDEA 缓存和索引介绍和清理方法(一)
  8. 7月29日绝地求生服务器维护,绝地求生7月29日更新到几点_绝地求生2020年7月29日更新维护时间安排一览_三六五吃鸡...
  9. Cocoa和Cocoa Touch框架浅析
  10. sql 按照天环比_同比环比sql实例
  11. 海量数据大课学习笔记(2)-不在其位要谋其政,技术Leader能力模型提升-小滴课堂
  12. poi导出Excel+图片
  13. c语言log库,Log4g
  14. 1354:括弧匹配检验(C C++)
  15. 请使用“与 或 非” 逻辑符号实现“同或”、“异或”逻辑运算,简述实现方案并给出示意电路图。‏
  16. hbase学习教程(一):hbase的概述和hbase架构及基本组件
  17. wps word打开是html,用Word打开WPS文件的两种方法,WPS文件如何打开?
  18. 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
  19. 2020年团体程序设计天梯赛
  20. 玩转群晖NAS套件系列五:Moments的安装与使用保姆级教程!

热门文章

  1. 当Java遇上机密计算
  2. 用OpenStack构建“区域医疗”云平台
  3. 【数据预测】基于matlab斑点鬣狗算法优化BP神经网络数据预测【含Matlab 219期】
  4. 【答题卡识别】基于matlab GUI hough变换答题卡判定与成绩统计(带面板)【含Matlab源码 1017期】
  5. 【优化预测】基于matlab天牛须算法优化BP神经网络预测【含Matlab源码 1316期】
  6. 【气动学】基于matlab GPS卫星仿真【含Matlab源码 1094期】
  7. 【预测模型】基于matlab GUI AR模型线性预测【含Matlab源码 942期】
  8. 广西计算机一级机试考试试题,2010年12月广西区计算机一级考试机试试题
  9. dubbo注入找不到bean_Dubbo配置参考手册之dubbo:reference
  10. ai智能时代教育内容的改变_人工智能正在改变我们的评论方式