使用SSIS(Pentaho Data Integration)将源表非匹配行更新至目标表
两表非匹配行识别与插入实现方案(适配Pentaho Data Integration)
你提到的SSIS为微软ETL工具,以下方案基于你实际使用的Pentaho Data Integration(PDI,俗称Kettle)设计:
- 步骤1:配置双表输入
添加2个「表输入」组件,分别配置数据源连接到源表TABLE A和目标表TABLE B,查询语句只保留用于匹配的关键字段即可,示例参考:
源表查询:SELECT 匹配字段名 FROM TABLE_A
目标表查询:SELECT 匹配字段名 FROM TABLE_B - 步骤2:差集比对
添加「合并记录(差集)」组件,将源表TABLE A的输入设置为「旧数据源」,目标表TABLE B的输入设置为「新数据源」,在字段匹配栏选择你用来判断记录是否相同的关键字段(也就是示例中存储1234、2349这类值的字段)。该组件会自动给输出记录打标记:仅源表存在的记录标记为deleted、仅目标表存在的标记为new、两边都存在的标记为identical。 - 步骤3:过滤缺失行
添加「过滤记录」组件,连接到「合并记录(差集)」的输出端,过滤条件设置为 标记字段值 = "deleted",匹配的结果就是源表有但目标表缺失的行。 - 步骤4:写入目标表
添加「表输出」组件,连接到「过滤记录」的匹配分支,配置连接到目标表TABLE B的数据源,映射好对应字段即可直接写入。如果你同时需要更新目标表中已存在行的其他字段,可以替换为「插入/更新」组件。
小提示:如果表数据量超过10万行,建议在两个「表输入」的查询语句末尾添加
ORDER BY 匹配字段名,按关键字段排序后再进行差集比对,能大幅提升组件运行效率,避免内存溢出问题。
内容的提问来源于stack exchange,提问作者margo1395
相关产品推荐
相关产品推荐

