Q:R2R(Row-to-Row)映射 XML 是数据同步“源表字段→目标表字段” 的转换规则基础教程。
Posted on 2025-11-18 20:26 三年三班王小朋 阅读(3) 评论(0) 收藏 举报R2R 映射 XML 语法速查表
一、核心节点层级(必记)
二、关键属性说明(常用必背)
1. 根节点 <table-mappings> 属性
2. 表映射 <table-mapping> 属性
3. 映射规则 <mapping> 属性
4. 字段映射 <column> 属性(核心)
三、高频表达式模板(直接复用)
1. 空值替换(特定字符转 NULL)
<column src="字段名" targ="目标字段名" value="REPLACE($(src.字段名), '-', NULL)"/>
2. 固定值填充
3. 字符串拼接
4. 条件判断(三元运算符)
5. 主键映射(匹配更新 / 删除记录)
6. 多字符替换(清洗脏数据)
7. 字符串截取(提取部分内容)
8. 日期格式转换
9. 数值计算(求和 / 平均值等)
<column src="字段1" targ="结果字段" value="$(src.字段1) + $(src.字段2)"/>
10. 条件范围判断
11. 布尔值转换(Y/N ↔ TRUE/FALSE)
12. 去重取值(取唯一值)
13. 空值兜底(默认值填充)
<column src="字段名" targ="目标字段名" value="NVL($(src.字段名), '默认值')"/>
14. 正则表达式匹配(复杂校验)
四、使用注意事项及实例
使用实例:
<?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>
浙公网安备 33010602011771号