我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PG-跨库操作

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PG-跨库操作

PG-跨库操作

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

  • dblink
  • postgres_fdw

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

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

lottu01=# create extension dblink;
CREATE EXTENSION

调用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)

使用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)

若我们跨库操作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。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PG-跨库操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PG-跨库操作

在PostgreSQL数据库之间进行跨库操作的方式dblinkpostgres_fdw本文先说说dblink;dblink是一个支持从数据库会话中连接到其他PostgreSQL数据库的插件。在其他数据库跨库操作也是采用dblink的方式一、安装dblinkPo
PG-跨库操作
2021-12-17

PG数据库常用操作

全量迁移备份数据$ pg_dump -h 172.19.235.145 -U -d > 20180704_dbpe.sql正式迁移首先要修改备份文件*.sql的owner,防止权限出现错误。$ psql -h -U -d -f 20180704_db
PG数据库常用操作
2015-09-21

SQL Server如何跨服务器操作数据库

本文小编为大家详细介绍“SQL Server如何跨服务器操作数据库”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL Server如何跨服务器操作数据库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。基础知识介
2022-11-30

云数据库同步:实现跨平台互操作性

云数据库同步在实现跨平台互操作性方面发挥着至关重要的作用,允许不同平台和应用程序共享和更新数据,从而增强协作和数据完整性。
云数据库同步:实现跨平台互操作性
2024-02-29

layui table如何实现数据的跨页操作?(layui table跨页数据操作技巧)

LayuiTable提供跨页数据操作支持。首先获取跨页数据,包括所有当前页面的数据行。随后可进行添加、更新和删除行等操作,指定要操作的行在当前页数据中的索引。此外,可使用分页操作,包括重新加载、上一页和下一页;监听分页事件以响应分页操作。自定义分页栏和使用filter、totalRow工具栏可针对跨页数据进行筛选和汇总。掌握这些技巧有助于提升表格交互体验和数据处理效率。
layui table如何实现数据的跨页操作?(layui table跨页数据操作技巧)
2024-04-02

SQLServer跨服务器操作数据库的图文方法(LinkedServer)

这篇文章主要介绍了SQLServer跨服务器操作数据库的方法,通过链接服务器(LinkedServer)实现SQLServer远程链接MySql等数据库,需要的朋友可以参考下
2022-11-13

如何在MySQL中进行跨数据库的查询操作

在MySQL中进行跨数据库的查询操作,可以使用以下两种方法:使用全限定表名(Fully Qualified Table Name):在查询语句中使用数据库名作为表名的前缀,例如:SELECT db1.table1.column1, db2.
如何在MySQL中进行跨数据库的查询操作
2024-03-06

SpringCloud gateway跨域配置的操作方式

这篇文章主要介绍“SpringCloud gateway跨域配置的操作方式”,在日常操作中,相信很多人在SpringCloud gateway跨域配置的操作方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S
2023-06-20

MongoDB(三):数据库操作、集合操作

1. 数据库操作看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了。首先我们要了解的一些要点:MongoDB将数据存储为一个文档,数据结构由键值对(key=>value)组成MongoDB文档类似于JSON对象,字段值可以
MongoDB(三):数据库操作、集合操作
2017-03-01

php操作mysql(数据库常规操作)

PHP操作MySQL数据库常规操作指南本指南介绍了使用PHP操作MySQL数据库的常规操作,包括连接、查询、插入、更新、删除数据以及最佳实践。通过代码示例,您将了解如何建立连接、执行查询、管理数据和防止SQL注入攻击。这些操作是数据库开发中的基础,对于有效管理数据至关重要。遵循这些准则,您可以提升PHP与MySQL数据库交互的效率和安全性。
php操作mysql(数据库常规操作)
2024-04-26

php操作mysql(数据库常规操作)

php操作数据库八步走 4";//删除数据// 执行 SQL 语句$result = mysqli_query($link, $sql);// 解析 SQL 语句执行结果if ($result) { echo "执行成功!" . " 成功删除了数
php操作mysql(数据库常规操作)
2016-04-04

2、操作数据库

操作数据库操作数据库 > 操作数据库中的表 > 操作数据库中表的数据MySQL关键字不区分大小写2.1、操作数据库(了解)1.创建数据库CREATE DATABASE westos;2.删除数据库DROP DATABASE westos;3.使用数据库
2、操作数据库
2022-01-25

编程热搜

目录