You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pentaho Data Integration中删除表2中不在源表的ID行?

在Pentaho中实现删除表2中未出现在表1的ID数据的方案

方案一:直接执行SQL脚本(高效推荐)

这种方式性能最优,尤其适合数据量较大的场景:

  • 新建转换,添加「执行SQL脚本」组件
  • 配置目标数据库连接,在脚本框中编写删除语句,推荐使用LEFT JOIN方式避免NULL值干扰:
DELETE t2 FROM 表2 t2 
LEFT JOIN 表1 t1 ON t2.ID = t1.ID 
WHERE t1.ID IS NULL

或者用NOT IN(注意表1的ID不能有NULL值):

DELETE FROM 表2 WHERE ID NOT IN (SELECT ID FROM 表1)
  • 先通过「预览SQL」验证语句正确性,确认无误后运行转换

方案二:用Pentaho组件分步可视化实现

适合需要拆解流程、中间步骤需做额外处理的场景:

  • 步骤1:提取表1的ID
    添加「表输入」组件,编写SQL:SELECT ID AS table1_id FROM 表1,输出字段为table1_id
  • 步骤2:提取表2的关联数据
    添加另一个「表输入」组件,编写SQL:SELECT ID AS table2_id, 主键字段 FROM 表2(主键字段用于精准删除)
  • 步骤3:左关联匹配
    添加「合并记录(哈希连接)」组件,将表1的输出设为「主步骤」,表2的输出设为「查找步骤」,关联条件设为table1_id = table2_id,选择「包含所有主记录和匹配的查找记录」模式
  • 步骤4:筛选未匹配的表2记录
    添加「筛选记录」组件,设置条件为table1_id IS NULL,得到表2中ID不在表1的数据集
  • 步骤5:执行删除
    添加「删除记录」组件,配置表2的数据库连接,选择表2并设置主键匹配字段,将筛选后的数据集传入该组件执行删除

注意事项

  • 执行删除操作前,建议先将筛选出的待删除数据输出到临时表验证正确性,避免误删
  • 确保两个表的ID字段数据类型完全一致,否则会导致关联匹配失败
  • 数据量较大时优先选择方案一,组件分步模式可能存在性能瓶颈

内容的提问来源于stack exchange,提问作者user21051730

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:22:15