记录PostgreSql 使用dblink跨库

dblink 是 PostgreSQL 的一个模块,允许你从当前数据库会话中连接到其他数据库并执行 SQL 命令。这对于跨库查询、数据同步或临时数据交换等场景非常有用。

以下是如何使用 dblink 进行跨库查询的基本步骤:

  1. 启用 dblink
    如果你的 PostgreSQL 还没有启用 dblink,你需要先安装它(psql数据库默认是安装了的,可先在服务器上查看)。对于大多数 PostgreSQL 安装,dblink 是作为标准扩展提供的,你可以通过以下 SQL 命令启用它:
--查看pgsql数据库已安装的扩展
SELECT * FROM pg_extension;
--安装dblink扩展
CREATE EXTENSION IF NOT EXISTS dblink;
  1. 连接到另一个数据库
    使用 dblink_connect 函数连接到另一个数据库。这个函数接受一个连接字符串作为参数,该字符串描述了如何连接到目标数据库。
SELECT dblink_connect('myconn', 'host=myotherhost dbname=myotherdb user=myuser password=mypass');

在这里,myconn 是一个你可以选择的连接名(以后用于引用此连接),而其他参数则是你连接到另一个数据库所需的典型 PostgreSQL 连接参数。
3. 执行查询
使用 dblink_execdblink_sql 执行查询。但请注意,这些函数主要执行不返回结果集的 SQL 命令(如 INSERT、UPDATE 等)。对于 SELECT 查询,你需要使用 dblink_get_resultdblink_fetch

例如,执行一个 SELECT 查询并获取结果:

-- 常规使用
SELECT * FROM dblink('myconn', 'SELECT * FROM myotherdb.public.mytable') AS t1(col1 type1, col2 type2, ...);--如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
1. 先执行dblink_connect保持连接
SELECT dblink_connect('myconn', 'host=myotherhost dbname=myotherdb user=myuser password=mypass');
2. 执行BEGIN命令SELECT dblink_exec('mycoon', 'BEGIN');
3. 执行数据操作(updateinsertcreate等命令)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');-- 建议搭配视图使用
CREATE VIEW people_nikename_view AS 
SELECT * FROM dblink('host=myotherhost dbname=myotherdb user=myuser password=mypass', 
'SELECT * FROM some_table')   
AS t(id int, name text);

注意:在 dblink 的 SQL 查询中,你通常需要指定目标数据库的表的全名(包括模式名)。
4. 断开连接(可选):
当你完成所有操作后,可以使用 dblink_disconnect 断开连接。但请注意,如果会话结束,连接通常会自动关闭。

SELECT dblink_disconnect('myconn');
  1. 注意事项
    • 使用 dblink 时,请确保你了解并遵循了所有相关的安全最佳实践,特别是关于密码管理和连接字符串的处理。
    • 跨库查询可能会影响性能,特别是当涉及大量数据时。确保在生产环境中仔细测试你的解决方案。
    • 考虑使用其他技术(如外部数据包装器、复制解决方案等)来满足你的具体需求,特别是当你需要更高级或更复杂的跨库功能时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DC/AC电源模块为现代电子设备提供稳定的能源

BOSHIDA DC/AC电源模块为现代电子设备提供稳定的能源 DC/AC电源模块是一种重要的电子设备,它为现代电子设备提供稳定的能源。在今天的高科技社会中,电子设备已经成为人们生活和工作的重要组成部分。从家用电器到计算机、手机、汽车和航天航空设备&…

基于antv x6实现的组织架构图

X6 是基于 HTML 和 SVG 的图编辑引擎,基于 MVC 架构,用户更加专注于数据逻辑和业务逻辑。 一、业务背景 将组织树形结构图形化,更直观的展示个人所在的组织架构。 二、功能点 组织结构按需渲染,支持层级展开、收缩按需求自定义…

CentOS8换源

一、备份 切换至源目录,备份源: cd /etc/yum.repos.d/ #进入源目录 ls #查看源文件 mkdir bkup #创建备份目录 mv CentOS-Linux-* bkup #将源文件移动至备份文件夹若是更换源并且原生源已经备份的情况下,使用rm -f *.repo删除原先文件…

【软件测试】之黑盒测试用例的设计

🏀🏀🏀来都来了,不妨点个关注! 🎧🎧🎧博客主页:欢迎各位大佬! 文章目录 1.测试用例的概念2.测试用例的好处3. 黑盒测试用例的设计3.1 黑盒测试的概念3.2 基于需求进行测…

Python面向对象 -- 多态

本套课在线学习视频(网盘地址,保存到网盘即可免费观看): ​​https://pan.quark.cn/s/2040f00d3205​​ 在Python中,变量的访问控制可以通过不同的命名约定实现,包括系统变量、保护变量和私有变量。这些命…

AI绘画Stable Diffusion画全身图总是人脸扭曲?ADetailer插件实现一键解决!

大家好,我是向阳 你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况?也曾感到束手无策?别担心,这份教程专为你而来。 在使用SD生成人物全身照时,你可能经常发现人物的脸部会出现扭曲问题。这是因为人物面部像素…

d88888888

分析:v9999999999 vn输出n个n 先算出n的位数p 所以答案是nn*10的p次方n*10的2p次方.....n*10的(n-1)p次方 化简n*(10的0次方10的p次方10的2p次方.....10的(n-1)p次方) 后面为等比数列求和 …

【前端】IntersectionObserver 实现图片懒加载和无限滚动

【前端】IntersectionObserver 实现图片懒加载和无限滚动 在前端开发中,性能优化是一个重要的考量因素。随着现代网页和应用的复杂性增加,确保页面快速加载和流畅运行变得越来越重要。本文将介绍一种强大的工具——IntersectionObserver API&#xff0c…

golang 自旋

自旋 自旋锁的定义:当一个线程尝试去获取某一把锁的时候,如果这个锁此时已经被别人获取(占用),那么此线程就无法获取到这把锁,该线程将会等待,间隔一段时间后会再次尝试获取。这种采用循环加锁 -> 等待的机制被称为…

力扣2488.统计中位数为 K 的子数组

力扣2488.统计中位数为 K 的子数组 等价转换 子数组为奇数 : 左小 右小 左大 右大 左小 – 左大 右大 – 右小 子数组为偶数 : 左小 右小 左大 右大 – 1 左小 – 左大 右大 – 右小 - 1提示中说明k为两数中左边那个 先从k的下标pos开始往左逆序…

LabVIEW新能源汽车电池性能测试系统

新能源汽车的核心部件之一是电池,其性能直接关系到整车的续航里程、安全性和寿命。为了确保电池的性能和可靠性,测试是必不可少的环节。本文介绍了一种基于LabVIEW的新能源汽车电池性能测试系统,通过LabVIEW与数据采集设备的无缝集成&#xf…

Unity 实现UGUI 简单拖拽吸附

获取鼠标当前点击的UI if(RectTransformUtility.RectangleContainsScreenPoint(rectTransform, Input.mousePosition)) {return rectTransform.gameObject; } 拖拽 在Update 中根据鼠标位置实时更新拖拽的图片位置。 itemDrag.transform.position Input.mousePosition; …

秒拿AI模型API Key!Chat2DB AI模型切换实用秘籍

智谱AI(ZhiPu AI) 智谱 AI 是由清华大学计算机系技术成果转化而来的公司,致力于打造新一代认知智能通用模型。 1.申请调用权限 智谱AI开放平台网址:https://open.bigmodel.cn/ 点击开始使用,进行登录/注册。 智谱A…

The Sandbox 创作者的幕后采访: 了解创作者的内心世界

我们采访了一些在 "创作者挑战" 中脱颖而出的顶尖创作者,探讨他们成功的秘诀以及在创造玩家喜爱的体验方面的心得。 The Sandbox 创作者挑战涌现出许多才华横溢的创作者,他们在游戏制作机制上的创新和突破引起了 The Sandbox 社区的广泛关注。…

大白菜U盘启动工具

大白菜如何u盘启动进winpe装系统大白菜是一款非常实用的U盘启动盘制作工具,可以帮助用户快速地将U盘制作成启动盘,从而方便地进行系统安装、维护和修复等操作。官方网站: 大白菜u盘启动盘制作工具_大白菜u盘装系统_大白菜pe_大白菜官网-首页…

为什么缠中说禅要选择08年“假死”跑路?

在缠中说禅的信徒圈内,流传着创始人李彪于2008年逝世的说法,这一事件常被描绘成一种悲壮的牺牲,仿佛是为了其理念与信徒们的福祉鞠躬尽瘁。然而,这一“逝世”既未经公开证实,也与李彪生前构建的高大名声形成了某种讽刺…

Spring AI 1.0.0 新变化,从 0.8.1 如何升级

Spring AI 1.0.0-M1 版本已经发布,距离 1.0.0 正式版又更近了一步。同时这也意味着,Spring AI 1.0.0 的 API 已经基本确定,不会发生大的改动。这里介绍一下,相对于上一个发布版本 0.8.1,Spring AI 1.0.0 的一些重要的变…

轻松跨越国界:使用WildCard畅享全球AI服务

大家好,现在AI技术已经深入到我们的日常生活中。然而,许多朋友仍然难以获取优质的AI工具和应用。那么,如何才能使用像ChatGPT这样的AI服务呢? 今天我为大家介绍一个“一劳永逸”的解决方案,它就是我们的主角——WildC…

HDU 1506 Largest Rectangle in a Histogram (DP或单调栈+笛卡尔树)

传送门 题目大意: 有N条的长条状的矩形,宽度都为1,第i条高度为Hi,相邻的竖立在x轴上,求最大的子矩形面积 DP思路及代码 求出当前点能够到达的最左边和最右边的位置,答案就是(最右边-最左边&…

阿里云 ECS 服务器的安全组设置

阿里云 ECS 服务器的安全组设置 缘由安全组多个安全组各司其职一些常见的IP段百度 IP 段华为云 IP 段搜狗蜘蛛 IP 段阿里云 IP 段 。。。 缘由 最近公司规模缩减,原有的托管在 IDC 机房的服务器,都被处理掉了,所有代码都迁移到了阿里云的云服…