pg库使用dblink连接mysql_PG-跨库操作-dblink
在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相关推荐
- MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?
来源:https://www.cnblogs.com/yjmyzz/p/12149737.html 当业务数据达到一定量级(比如:mysql单表记录量>1千万)后,通常会考虑"分库分表 ...
- mysql跨库查询 索引_MySQL中跨库查询怎么搞?
导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...
- mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?
在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...
- SQL注入—跨库注入
SQL注入-跨库注入 1.SQL注入-跨库注入 1.1.前言 1.2.跨库注入介绍 2.跨库注入 2.1.跨库注入准备 2.2.跨库注入流程 2.2.1.判断是否为管理员权限 2.2.2.获取数据库下 ...
- 在MySQL中怎样进行跨库查询?
在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...
- 事务 跨库事务 分布式事务及解决方案
什么是事务? 本地事务 事务传播行为: 事务的四大特性 ACID 并发事务产生的问题可以分为4类 事务的隔离级别 什么是分布式事务 分布式涉及到的原理: CAP原理: BASE理论 柔性事务和刚性事务 ...
- oracle跨库连接查询
一.授权(本地客户器端授权当前用户) grant create database link to szfile 第一种连接方法:配置本地数据库服务器的tnsnames.ora文件 SZFILE =(D ...
- 人大金仓Kingbase数据库使用dblink进行跨库操作示例
参考官网文档:15. dblink - KingbaseES产品手册 业务场景: 现有数据库及用户: db_a,u_a db_b,u_b 想要在db_a连接中,跨库对db_b中的表进行查询等操作 使用 ...
- Oracle 跨库查询表数据(不同的数据库间建立连接)
1.情景展示 当需要从A库去访问B库中的数据时,就需要将这两个库连接起来: 两个数据库如何实现互联互通,在oracle中,可以通过建立DBLINK实现. 2.解决方案 2018/12/05 第一步:创 ...
- 因数据迁移导致跨库连接失效的解决办法
oracle通过imp重新导的数据库,可能跨库连接失效而产生错误,这时就要重新创建连接: 1. 一定注意要删除出错的dplink: 2. 重新创建同名的dplink,注意要是public类型,同名则是 ...
最新文章
- java游戏下载ios_java浏览器下载
- 「SAP技术」SAP MM 采购信息记录新价格不能体现在采购订单新的ITEM上?
- 虚拟服务器至强,用至强解决瓶颈 桌面虚拟化案例分享
- golang中的httptest
- redis 存储数据不设置过期时间 会自动过期吗_Redis-数据淘汰策略持久化方式(RDB/AOF)Redis与Memcached区别...
- 最让人纠结的等式:0.999...=1
- c盘清理代码_IntelliJ IDEA 缓存和索引介绍和清理方法(一)
- 7月29日绝地求生服务器维护,绝地求生7月29日更新到几点_绝地求生2020年7月29日更新维护时间安排一览_三六五吃鸡...
- Cocoa和Cocoa Touch框架浅析
- sql 按照天环比_同比环比sql实例
- 海量数据大课学习笔记(2)-不在其位要谋其政,技术Leader能力模型提升-小滴课堂
- poi导出Excel+图片
- c语言log库,Log4g
- 1354:括弧匹配检验(C C++)
- 请使用“与 或 非” 逻辑符号实现“同或”、“异或”逻辑运算,简述实现方案并给出示意电路图。
- hbase学习教程(一):hbase的概述和hbase架构及基本组件
- wps word打开是html,用Word打开WPS文件的两种方法,WPS文件如何打开?
- 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
- 2020年团体程序设计天梯赛
- 玩转群晖NAS套件系列五:Moments的安装与使用保姆级教程!
热门文章
- 当Java遇上机密计算
- 用OpenStack构建“区域医疗”云平台
- 【数据预测】基于matlab斑点鬣狗算法优化BP神经网络数据预测【含Matlab 219期】
- 【答题卡识别】基于matlab GUI hough变换答题卡判定与成绩统计(带面板)【含Matlab源码 1017期】
- 【优化预测】基于matlab天牛须算法优化BP神经网络预测【含Matlab源码 1316期】
- 【气动学】基于matlab GPS卫星仿真【含Matlab源码 1094期】
- 【预测模型】基于matlab GUI AR模型线性预测【含Matlab源码 942期】
- 广西计算机一级机试考试试题,2010年12月广西区计算机一级考试机试试题
- dubbo注入找不到bean_Dubbo配置参考手册之dubbo:reference
- ai智能时代教育内容的改变_人工智能正在改变我们的评论方式