Q:R2R(Row-to-Row)映射 XML 是数据同步“源表字段→目标表字段” 的转换规则基础教程。

news/2025/11/18 20:27:24/文章来源:https://www.cnblogs.com/wxp100/p/19239223

Q:R2R(Row-to-Row)映射 XML 是数据同步“源表字段→目标表字段” 的转换规则基础教程。

Posted on 2025-11-18 20:26  三年三班王小朋  阅读(0)  评论(0)    收藏  举报

R2R 映射 XML 语法速查表

一、核心节点层级(必记)

节点名称层级关系核心作用
<table-mappings> 根节点 统一管理所有表映射配置
<table-mapping> 根节点子级 关联单个源表,定义表级映射
<mappings> 表映射子级 存放具体字段映射规则集合
<mapping> 映射集合子级 绑定目标表和映射策略(如全量 / 增量)
<column> 映射规则子级 单个字段的转换逻辑(核心配置)

 

二、关键属性说明(常用必背)

1. 根节点 <table-mappings> 属性

属性名称作用示例值
xmlns:xsi 指定 XML Schema 实例命名空间 http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation 关联 XSD 约束文件(验证 XML 合法性) ../r2RMapping.xsd(相对路径)

2. 表映射 <table-mapping> 属性

属性名称作用示例值
src 指定数据来源表名称 pt_outhosp_order(门诊订单表)

3. 映射规则 <mapping> 属性

属性名称作用可选值 / 示例值
targ 指定数据目标表名称 yh_mz_yzmxjl(门诊医嘱明细记录表)
type 映射类型(同步策略) all(全量)、delta(增量)

4. 字段映射 <column> 属性(核心)

属性名称作用可选值 / 示例值
src 源字段来源:源表字段名或无依赖标识 status(源表字段)、N/A(无依赖)
targ 目标表字段名(数据写入字段) status_targxtsjgxsj
value 字段转换规则(固定值 / 表达式 / 函数) '住院'REPLACE(...)$(sysdate)
pk 标记是否为目标表主键(匹配记录用) true(是)、默认不写(否)

 

三、高频表达式模板(直接复用)

1. 空值替换(特定字符转 NULL)

<column src="字段名" targ="目标字段名" value="REPLACE($(src.字段名), '-', NULL)"/>
  • 用途:将源表中 '-' 等无效字符转为 NULL,避免脏数据。

2. 固定值填充

<!-- 字符串常量(需单引号包裹) -->
<column src="N/A" targ="目标字段名" value="'固定值'"/>
<!-- 系统时间(适配 Oracle 等数据库) -->
<column src="N/A" targ="目标字段名" value="'$(sysdate)'"/>

3. 字符串拼接

<column src="N/A" targ="目标字段名" value="body['参数1']+'_'+body['参数2']"/>
  • 用途:拼接接口参数或源表字段,生成唯一标识(如报告流水号)。

4. 条件判断(三元运算符)

<column src="N/A" targ="目标字段名" value="条件1? 结果1: 条件2? 结果2: 默认值"/>
  • 示例:'1'.equals(body['age_unit'])? body['age']:'岁'.equals(body['age_unit'])? body['age']:null

5. 主键映射(匹配更新 / 删除记录)

<column src="源表主键字段" targ="目标表主键字段" pk="true"/>
  • 用途:同步时通过主键定位目标表记录,确保更新 / 删除精准。

6. 一些实例

<?xml version="1.0" encoding="UTF-8"?>
<table-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../r2RMapping.xsd"><table-mapping src="pt_outhosp_order"><mappings><mapping targ="yh_mz_yzmxjl" type="all"><!-- 1. 状态字段映射:将源表 status 字段值中的 '-' 替换为 NULL 后,存入目标表 status_targ 字段 --><column src="status" targ="status_targ" value="REPLACE($(src.status), '-', NULL)"><!-- 2. 系统更新时间:将目标表 xtsjgxsj 字段设置为当前系统日期时间 --><column src="N/A" targ="xtsjgxsj" value="'$(sysdate)'"/><!-- 3. 操作类型标识:将 dsql_optype 字段设置为 'update',标识操作类型为更新 --><column src="N/A" targ="dsql_optype" value="'update'"/><!-- 4. 主键字段映射:将源表 system_source 字段作为主键,映射到目标表 hisbb 字段 --><column src="system_source" targ="hisbb" pk="true"/><!-- 5. 操作类型标识:将 dsql_optype 字段设置为 'delete',标识操作类型为删除 --><column src="N/A" targ="dsql_optype" value="'delete'"/><!-- 6. 操作类型标识:将 dsql_optype 字段设置为 'batch_delete',标识操作类型为批量删除 --><column src="N/A" targ="dsql_optype" value="'batch_delete'"/><!-- 7. 报告流水号构造:通过拼接 request_no 和 report_serial_no 构造目标表 bglsh 字段的值 --><column src="N/A" targ="bglsh" value="body['request_no']+'_'+body['report_serial_no']"/><!-- 8. 年龄字段处理:根据 age_unit 的值判断,若为 '1' 或 '岁',则取 age 的值,否则为 null,存入 nls 字段 --><column src="N/A" targ="nls" value="'1'.equals(body['age_unit'])? body['age']:'岁'.equals(body['age_unit'])? body['age']:null"/><!-- 9. 就诊性质字段:将目标表 jzxzmc 字段固定设置为 '住院' --><column src="N/A" targ="jzxzmc" value="'住院'"/></mapping></mappings></table-mapping>
</table-mappings>

 

四、使用注意事项

  1. 节点嵌套:<column> 必须是 <mapping> 的直接子节点,不可嵌套在其他 <column> 内。
  2. 字符串格式:常量字符串需用单引号包裹(如 '住院'),避免语法错误。
  3. 占位符:$(src.字段名) 用于取源表字段值,body['key'] 用于取外部参数(如接口请求体),需结合工具支持调整。
  4. 兼容性:函数(如 REPLACE)和系统变量(如 sysdate)需适配目标数据库,不同数据库语法可能略有差异。

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

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

相关文章

2025年11月免手扶吸奶器,穿戴式吸奶器,百元吸奶器品牌测评排名,清洁便捷优选!

2025 年 11 月免手扶吸奶器,穿戴式吸奶器,百元吸奶器品牌测评排名,清洁便捷优选!在母婴市场中,吸奶器是众多妈妈们的刚需产品。随着科技的发展,免手扶吸奶器、穿戴式吸奶器等新型产品不断涌现,为妈妈们带来了更…

【Azure Developer】解决在中国区 Microsoft Graph 命令Get-MgUserAuthenticationPhoneMethod 不可用的问题

问题描述 使用PowerShell Microsoft Graph 命令来获取用户认证的电话信息时,发现 Get-MgUserAuthenticationPhoneMethod 命令在中国区 Azure上不可用。报错:Get-MgUserAuthenticationPhoneMethod : Resource not fo…

基于Redis的滑动窗口限流-Golang实现

基于Redis实现滑动窗口限流,分析不使用lua时的并发问题常用限流算法 包括固定窗口、滑动窗口、令牌桶、漏桶 固定窗口: 将时间划分为固定长度的窗口(如 1 秒),窗口内维护请求计数,当请求数超过阈值时拒绝新请求。…

查看laya已经加载的资源

查看laya已经加载的资源Laya.Loader.loadedMap 不是Laya.loader, loadedMap是static的, 在Loader类中定义的.

ESP32 + LVGL 开发笔记(一):点亮屏幕

折腾了几天 lvgl,打算写一个简单的教程来记录一下。教程的最后会实现一下使用 lvgl 显示 lottie 动画的效果,见下图:环境介绍 硬件:esp32s3 n16r8核心板 1.47寸 ips lcd彩色屏幕(st7789)分辨率320 x 172,没有触屏…

聊聊deepseek对latex的辅助

聊聊deepseek对latex的辅助最近两天,用deepseek辅助latex写了一篇20页的反串讲文档,感觉结构清晰,且格式工整,一目了然。 很感慨的一点是,最开始的时候,是大学毕业论文时使用latex,当时就想着自己不用考虑work的…

【LVGL】图片部件

引言 图片部件(lv_img)图片部件相关 api 函数图片转换 LVGL 中要显示图片则需要 C 语言,或者 bin 的方式, 恰好 LVGL 官网提供了一个很好的在线工具:图像转换器 不过要注意的是选择自己当前的 LVGL 版本,下面是我…

linux c makefile

当然可以!在 Linux 系统中,makefile 是用于编译和构建项目的常用工具。它定义了项目的构建规则,帮助开发者自动化编译过程。一、什么是 Makefile? Makefile 是一个文本文件,它定义了如何编译和链接源代码。它告诉…

基于自适应遗传算法风光场景生成的电动汽车并网优化调度【IEEE33节点】(Matlab代码建立)

基于自适应遗传算法风光场景生成的电动汽车并网优化调度【IEEE33节点】(Matlab代码建立)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

10大 spring源码设计模式 (图解+秒懂+史上最全)

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、…

实用指南:《中国电力产业数字化》深度解析与前沿展望(下)——中国电力数字化转型路线图:SPARK 融合平台的设计与落地方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

High Frequency Active Auroral Research Program(HAARP)部分摘取

High Frequency Active Auroral Research Program(HAARP)部分摘取原网站:https://haarp.gi.alaska.edu/ 部分摘取:利用最近研发的强大且灵活的电离层加热器(如EISCAT加热器,以及最近建成的HAARP加热器)对高频无…

CF813E Army Creation

考虑套用 HH 的项链做法,如果一个数前面第 \(k\) 个数小于 \(l\) 则可以选,那么用主席树维护值域线段树即可。

Mac 怎么安装 PyCharm 2020.1.dmg?超简单教程(附安装包)

Mac 怎么安装 PyCharm 2020.1.dmg?超简单教程(附安装包)​ 一、下载文件 安装包下载:https://pan.quark.cn/s/c35137bf43ce , PyCharm 2020.1.dmg文件,一般是在浏览器下载后,放在了「下载」文件夹里。如果没有,…

C# 蓝牙远程控制应用:从零达成移动设备与硬件的无线交互

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

铭记旧友

命运,总是一个恶劣地笑着,将人间搅得天翻地覆的死神。这次祂将手伸向她的父母,以名为“期许”的毒药杀死了她。 也曾挣扎过,将呼救之声传入爱情之耳,却不知会陷入更深的泥泞。 缺爱吗?或许吧,但命运所施舍给她的…

标题:鸿蒙Next音频开发新篇章:深入解析Audio Kit(音频服务) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring AI Alibaba 项目源码学习(十二)-完结:Tool

Tool 系统分析 请关注微信公众号:阿呆-bot 概述 本文档分析 Spring AI Alibaba Agent Framework 中的 Tool(工具)系统,包括工具的定义、注册、调用流程、扩展机制以及 AgentTool 的实现。 入口类说明 ToolCallback…

ftp,sftp,scp,tftp几种简单对比,以及python实现ftp功能

ftp,sftp,scp,tftp几种简单对比,以及python实现ftp功能对比如下:特性维度FTPSFTPSCPTFTP安全性 明文传输 基于SSH加密 基于SSH加密 无加密默认端口 21 22 22 69协议基础 TCP SSH SSH UDP认证方式 用户名/密码 多种(…

实用指南:深入解析音频编解码器(Audio CODEC):硬件、接口与驱动开发

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …