PostgreSQL跨数据库表字段值复制实战经验分
场景需求
在实际工作中,我们经常需要将一个PostgreSQL数据库中的表字段值复制到另一个数据库中。最近我在处理两个ERP系统数据库(A库和B库)之间的数据同步时,就遇到了这样的需求:需要将B库中sale_order
表的合同信息(合同编号+合同名称)组合后更新到A库同表的client_order_ref
字段。
技术方案
PostgreSQL提供了dblink
扩展来实现跨数据库查询。下面是完整的解决方案和分步解析:
1. 环境准备
首先确保已安装dblink扩展:
CREATE EXTENSION IF NOT EXISTS dblink;
2. 初步数据探查
在执行正式更新前,我先查询了B库的数据结构,了解字段内容和格式:
SELECT name, contract_code, contract_name,CONCAT(contract_code, '无编号'), ' - ', COALESCE(contract_name, '无名称')) AS combined_ref
FROM dblink('dbname=B user=postgres password=postgres', 'SELECT name, contract_code, contract_name FROM sale_order'
) AS t(name text, contract_code text, contract_name text)
LIMIT 5;
这个查询帮我确认了:
- 数据库连接参数是否正确
- 字段值是否存在NULL情况
- 组合后的格式是否符合预期
3. 正式更新操作
确认数据无误后,在事务中执行更新:
begin;
UPDATE sale_order a
SET client_order_ref = b.combined_ref
FROM (SELECT name,CONCAT(CASE WHEN contract_code IS NULL THEN '' ELSE contract_code END,CASE WHEN contract_code IS NOT NULL AND contract_name IS NOT NULL THEN ' - 'ELSE ''END,CASE WHEN contract_name IS NULL THEN '' ELSE contract_name END) AS combined_refFROM dblink('dbname=B user=postgres password=postgres', 'SELECT name, contract_code, contract_name FROM sale_order') AS t(name text, contract_code text, contract_name text)
) b
WHERE a.name = b.name;
commit;
关键点总结
- dblink使用:必须正确配置连接字符串,包括dbname、user和password
- NULL值处理:使用COALESCE或CASE语句妥善处理可能的NULL值
- 数据预览:更新前先用SELECT验证查询结果,避免直接更新导致错误
- 事务保障:在BEGIN/COMMIT中执行更新,确保操作原子性
- 字段匹配:确保WHERE条件正确关联两表的对应记录
注意事项
- 生产环境建议使用更安全的认证方式而非明文密码
- 大数据量更新时考虑分批处理,避免长时间锁表
- 更新前做好数据备份
通过这个案例,我深刻体会到PostgreSQL跨数据库操作的强大灵活性,也积累了处理实际数据迁移问题的宝贵经验。
相关文章:
PostgreSQL跨数据库表字段值复制实战经验分
场景需求 在实际工作中,我们经常需要将一个PostgreSQL数据库中的表字段值复制到另一个数据库中。最近我在处理两个ERP系统数据库(A库和B库)之间的数据同步时,就遇到了这样的需求:需要将B库中sale_order表的合同信息&a…...

【计网】五六章习题测试
目录 1. (单选题, 3 分)某个网络所分配到的地址块为172.16.0.0/29,能接收目的地址为172.16.0.7的IP分组的最大主机数是( )。 2. (单选题, 3 分)若将某个“/19”的CIDR地址块划分为7个子块,则可能的最小子块中的可分配IP地址数量…...
汇川EasyPLC MODBUS-RTU通信配置和编程实现
累积流量计算(MODBUS RTU通信数据处理)数据处理相关内容。 累积流量计算(MODBUS RTU通信数据处理)_流量积算仪modbus rtu通讯-CSDN博客文章浏览阅读219次。1、常用通信数据处理MODBUS通信系列之数据处理_modbus模拟的数据变化后会在原来的基础上累加是为什么-CSDN博客MODBUS通…...

从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级
使用 CANopen PLC 扩展改造物流中心的传送带 倍讯科技profinet转CANopen网关BX-601-EIP将新的 PROFINET PLC 系统与旧的基于 CANopen 的传送带连接起来,简化了物流中心的自动化升级。 新建还是升级?这些问题通常出现在复杂的内部物流设施中,…...

基于Yolov8+PyQT的老人摔倒识别系统源码
概述 基于Yolov8PyQT的老人摔倒识别系统,该系统通过深度学习算法实时检测人体姿态,精准识别站立、摔倒中等3种状态,为家庭或养老机构提供及时预警功能。 主要内容 完整可运行代码 项目采用Yolov8目标检测框架结合PyQT5开发…...

wsl2 不能联网
wsl2 安装后用 wifi 共享是能联网,问题出在公司网络限制 wsl2 IP 访问网络,但是主机可以上网。 解决办法,在主机用 nginx 设置代理,可能需要开端口权限 server {listen 9000;server_name localhost;location /ubuntu/ {#…...
双击重复请求的方法
1、限制点击次数 2、vue中 可以自定义一个属性指令 preventReClick.js中定义: import Vue from vue Vue.directive(preventReClick, {inserted: (el, binding) > {el.addEventListener(click, () > {if (!el.disabled) {el.disabled truesetTimeout(() >…...

Java[IDEA]里的debug
目录 前言 Debug 使用Debug 总结 前言 这里我说一下就是 java IDEA 工具里的debug工具 里的一个小问题 就是 当我们使用debug去查看内部文档 查看不到 是为什么 Debug 所谓 debug 工具 他就是用来调试程序的 当我们写代码 报错 出错时 我们就可以使用这个工具 因此这个工具…...
一条SQL语句的旅程:解析、优化与执行全过程研究
1、引言 在现代信息系统中,数据库是核心组件之一。SQL(结构化查询语言)作为与数据库交互的主要方式,其执行效率直接影响到整个系统的性能表现。虽然开发者常常只需编写一行简单的 SQL,但数据库内部却经历了一个复杂而精密的过程来完成这条 SQL 的处理。 本文将以一个完整…...
动态规划经典三题_完全平方数
279. 完全平方数 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而…...
LVGL(lv_textarea文本框控件)
文章目录 一、lv_textarea 是什么?二、基本用法1. 创建 lv_textarea 对象2. 设置提示文字(占位符)3. 设置最大长度4. 设置密码模式(显示为\*号)5. 获取和设置内容6. 配合虚拟键盘使用(常用于触摸屏…...
蓝桥杯国14 互质
问题描述 请计算在 [1,2023的2023次幂] 范围内有多少个整数与 2023 互质。由于结果可能很大,你只需要输出对 1097 取模之后的结果。 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个…...

DAO模式
1. 持久化 简单来说,就是把代码的处理结果转换成需要的格式进行储存。 2. JDBC的封装 3. DAO模式 4. Properties类与Properties配置文件 添加 读取 5. 使用实体类传递数据 6. 总结 附录: BaseDao指南 BaseDao指南-CSDN博客...

ECharts图表工厂,完整代码+思路逻辑
Echart工厂支持柱状图(bar)折线图(line)散点图(scatter)饼图(pie)雷达图(radar)极坐标柱状图(polarBar)和极坐标折线图(po…...
Logback 在 Spring Boot 中的详细配置
1. Logback 配置文件 Spring Boot 默认会加载 classpath 下的 logback-spring.xml(推荐)或 logback.xml 作为 Logback 的配置文件。 推荐使用 logback-spring.xml,因为 Spring Boot 提供了扩展支持(例如基于 Profile 的配置&am…...
写起来比较复杂的深搜题目
年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置。 那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息。 编写程序,通过使用一张小镇的地图…...
MySQL强化关键_016_存储引擎
目 录 一、概述 二、MySQL 支持的存储引擎 三、指定存储引擎 四、修改存储引擎 五、常用存储引擎及适用场景 一、概述 MySQL 存储引擎决定了数据在磁盘上的存储方式和访问方式;不同的存储引擎实现了不同的存储和检索算法;MySQL 常见的存储引擎&…...

CSS:margin的塌陷与合并问题
文章目录 一、margin塌陷问题二、margin合并问题 一、margin塌陷问题 二、margin合并问题...
防护等级IPxx含义 -雨天充电需要防护盖吗
指标快要到期,新买的电车,第一次碰到雨天充电的问题,有点担心漏电。然后电商平台上一查,果然有卖防护罩的,但是真的需要吗? 下面从充电口防护等级,国标要求、注意事项等几个方面分析。 一、防护…...
【设计模式】责任链+模板+工程模式使用模板
前言 方便写出优雅,解耦,高内聚,高复用的代码。 Demo // 1. 定义验证器接口(责任链模式) public interface Validator {Validator setNext(Validator next);boolean validate(Data data); }// 2. 创建抽象验证器&am…...

探索服务网格(Service Mesh):云原生时代的网络新范式
文章目录 一、引言二、什么是服务网格基本定义形象比喻 三、服务网格解决了哪些问题微服务通信复杂性可观察性安全性 四、常见的服务网格实现IstioLinkerdConsul Connect 五、服务网格的应用场景大型微服务架构混合云环境 六、服务网格的未来发展与其他技术的融合标准化和行业规…...

SQL SERVER中实现类似LEAST函数的功能,返回多列数据中的最小值
使用 LEAST()函数可以简洁地在一行SQL语句中找出多个值中的最小值,但在SQLServer数据库中,没有内置的LEAST函数。 我们可以使用values子句创建临时的数据集的办法,返回多列数据中的最小值。 创建表 CREATE TABLE stu…...

SymPy | 获取表达式自由变量方法与因式分解
SymPy 是 Python 中强大的符号计算库,广泛应用于数学建模、公式推导和科学计算。本文将从两个核心功能展开:表达式中自由变量的获取与因式分解的实现,通过完整代码示例和深入分析,帮助读者掌握其使用方法。 第一部分:获…...

深度剖析并发I/O模型select、poll、epoll与IOCP核心机制
核心概要:select、poll、epoll 和 IOCP 是四种用于提升服务器并发处理能力的I/O模型或机制。前三者主要属于I/O多路复用范畴,允许单个进程或线程监视多个I/O流的状态;而 IOCP 则是一种更为彻底的异步I/O模型。 一、引言:为何需要这…...
单片机——实现交通信号灯管理
随便写写,汇总一下,就一个单片机,没有模拟软件,什么都没有~ 点阵、数码管、led同时点亮 #include <reg52.h>sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4;// 交通灯控制引…...

数据结构 -- 交换排序(冒泡排序和快速排序)
冒泡排序 基于“交换”的排序:根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置 //交换 void swap(int &a,int &b){int temp a;a b;b temp; }//冒泡排序 void BubbleSort(int A[],int n){for(int i0;i<n-1;i){bool flag false; …...

【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)
前缀和算法:高效处理区间求和的利器 目录 引言什么是前缀和前缀和的基本实现前缀和的作用前缀和的典型应用场景前缀和的优缺点分析实战例题解析 引言 区间求和问题的普遍性暴力解法的时间复杂度问题前缀和算法的核心思想 什么是前缀和 前缀和的数学定义 通俗来…...

macOS 安装 PostgreSQL
文章目录 安装安装信息 验证GUI 工具下载 安装 最简单的方式是通过 brew 安装 brew install postgresql17该版本在 brew 上的详情页:https://formulae.brew.sh/formula/postgresql17 你也可以根据需要,搜索 安装更新版本 如果你没有安装 brew…...
打破传统范式,线上 3D 画展彰显多元亮点
(一)沉浸式体验,身临其境赏画 线上 3D 画展运用先进的 3D 建模和虚拟现实(VR)技术,高度还原了真实的展厅环境 。展厅内的布局、灯光,甚至墙壁的质感都被完美复刻,让观众仿佛置身于…...

Linux系统:基础命令之 ls~pwd~cd
文章目录 前言一、ls命令📘 命令简介:🧠 基本语法:演示ls🔧 常用选项:-l选项-a选项-h选项 小结 ls 二、pwd命令📘 命令简介:何为绝对路径!何为相对路径!&…...