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

如何在Talend中合并两个不同文件的多列数据?

Talend实现多文件列合并(保留共同列与独有列)

需求说明

现有两个文本文件:
第一个文件数据:

USERNAME |  AGE   | GENDER | CHILDREN
Joe      |  23    | male   | 2
Annie    |  45    | female | 5
         |        |        |

第二个文件数据:

USERNAME |  AGE   |
Jonathan |  33    |
Mike     |  41    | 

需要合并两个文件,共同列(USERNAME、AGE)合并为一列,同时保留第一个文件独有的GENDER、CHILDREN列,第二个文件对应的独有列留空,最终输出:

USERNAME |  AGE   | GENDER | CHILDREN
Joe      |  23    | male   | 2
Annie    |  45    | female | 5
Jonathan |  33    |        |
Mike     |  41    |        |

实现步骤

1. 配置文件输入组件

拖入两个tFileInputDelimited组件到工作区,分别对应两个文件:

  • 第一个文件组件(命名为tFileInputDelimited_1):

    • 在「Basic settings」中选择目标文件,设置字段分隔符为|,勾选「Trim all fields」去除字段前后空格。
    • 字段列表定义为:USERNAME(String类型)、AGE(Integer类型)、GENDER(String类型)、CHILDREN(Integer类型)。
    • 添加行过滤:在「Row Filter」中输入!(USERNAME == null || USERNAME.trim().isEmpty()),过滤掉文件末尾的空行。
  • 第二个文件组件(命名为tFileInputDelimited_2):

    • 同样选择目标文件,字段分隔符设为|,勾选「Trim all fields」。
    • 先定义原有字段:USERNAME(String类型)、AGE(Integer类型)。
    • 添加两个虚拟字段:GENDER(String类型,默认值设为null)、CHILDREN(Integer类型,默认值设为null),让输出列结构与第一个文件完全一致。
    • 同样添加行过滤!(USERNAME == null || USERNAME.trim().isEmpty()),过滤空行。

2. 合并两个数据集

拖入tUnionAll组件,将两个tFileInputDelimited组件的「Main」输出分别连接到tUnionAll的两个输入端口。

3. 输出结果文件

拖入tFileOutputDelimited组件,将tUnionAll的输出连接到该组件:

  • 在「Basic settings」中设置输出文件路径。
  • 字段分隔符设为|,勾选「Trim all fields」,同时可以设置表头(勾选「Include header」)。

4. 运行作业

配置完成后运行作业,即可得到符合要求的合并结果。

补充说明

如果不需要保留表头,可在tFileOutputDelimited中取消「Include header」的勾选;若字段类型有调整需求,可在tFileInputDelimited或tMap中修改字段类型适配实际数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:10:11