如何在Boomi中对比不同数据库下的MySQL数据表数据?
在Boomi中对比两个MySQL表数据集的操作步骤
一、先获取源/目标表的完整数据集
- 拖入两个Database Query操作,分别配置好源MySQL和目标MySQL的数据库连接
- 每个Query里写SQL拉取完整数据,必须带上用于匹配的唯一主键(比如
SELECT id, col1, col2, ... FROM your_table) - 保证两个Query返回的字段结构对齐(字段名、数据类型对应),如果不对齐,后续用Map组件做字段映射调整
二、两种常用的数据集对比实现方式
方式1:用Lookup组件关联匹配(适合中小数据集)
- 先把其中一个数据集(比如目标表数据)通过Cache组件缓存,作为Lookup的数据源
- 处理另一个数据集(源表数据)时,在Map组件里加Lookup规则,用主键匹配缓存里的目标记录
- 在Map里加判断逻辑:
- 如果Lookup命中:逐字段对比源和目标的值,标记出差异字段
- 如果Lookup没命中:标记成「源表有但目标表缺失」的记录
- 要找「目标表有但源表缺失」的记录,就反向来一次:把源表数据缓存,用目标表数据做Lookup匹配,标记这类记录
方式2:用Data Process写Groovy脚本(适合大数据集)
- 把两个数据集都传入Data Process组件,在脚本里做以下操作:
- 把两个数据集转成以主键为Key的Map集合,方便快速匹配
- 遍历源表的Map,对比目标表对应主键的字段值,收集差异记录和源表独有的记录
- 遍历目标表的Map,收集目标表独有的记录
- 参考脚本片段:
// 读取源和目标数据集 def sourceRecords = dataContext.getStream('source').readRecords() def targetRecords = dataContext.getStream('target').readRecords() // 转成主键映射的Map def sourceMap = sourceRecords.collectEntries { [(it.getField('id')): it] } def targetMap = targetRecords.collectEntries { [(it.getField('id')): it] } // 对比逻辑 def diffResults = [] // 源表 vs 目标表 sourceMap.each { key, sourceRec -> def targetRec = targetMap.get(key) if (!targetRec) { sourceRec.setField('diff_type', 'SOURCE_ONLY') diffResults.add(sourceRec) } else { // 这里以col1、col2为例,按需替换成你要对比的字段 def hasDiff = false if (sourceRec.getField('col1') != targetRec.getField('col1')) { sourceRec.setField('col1_diff', "${sourceRec.getField('col1')} -> ${targetRec.getField('col1')}") hasDiff = true } if (sourceRec.getField('col2') != targetRec.getField('col2')) { sourceRec.setField('col2_diff', "${sourceRec.getField('col2')} -> ${targetRec.getField('col2')}") hasDiff = true } if (hasDiff) { sourceRec.setField('diff_type', 'FIELD_DIFF') diffResults.add(sourceRec) } } } // 目标表 vs 源表,收集目标独有的记录 targetMap.each { key, targetRec -> if (!sourceMap.get(key)) { targetRec.setField('diff_type', 'TARGET_ONLY') diffResults.add(targetRec) } } // 输出对比结果 dataContext.addStream(diffResults)
三、输出对比结果
对比完成后,把结果集通过Database Write写入日志表留存,或者用Message Shape发通知,也可以导出成CSV文件。
内容的提问来源于stack exchange,提问作者AGaur
相关产品推荐
相关产品推荐

