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

如何在SSIS中将一条XML记录拆分为雇主和雇员两条记录?

SSIS拆分XML记录为雇主/雇员两条独立记录的实现方案

数据流可视化实现(推荐)

1. 配置XML源组件

使用XML源读取目标XML文件,调整XPath配置,确保同时提取document节点的fileNo属性,以及所有item节点的name属性和text节点值。此时数据流会生成多行数据,每行对应一个item,包含字段:fileNo、item_name、item_text。

2. 派生列标记角色

添加派生列组件,新增Role字段,通过条件判断区分雇主/雇员:

LEFT([item_name], 8) == "Employer" ? "雇主" : "雇员"

3. 派生列提取统一字段名

再添加一个派生列组件,新增FieldName字段,剥离item_name的前缀:

RIGHT([item_name], LEN([item_name]) - 8)

示例:EmployerEmail转换为Email,EmployeeSurname转换为Surname。

4. 透视组件转换为宽表

添加透视组件,配置参数:

  • 分组依据:fileNo、Role
  • 透视键:FieldName
  • 透视值:item_text
    处理后会生成两行数据,每行包含fileNo、Role、Email、Forename、Surname共5列,分别对应雇主和雇员的完整信息。

5. 导出至Excel

使用Excel目标组件,将透视后的数据集写入目标Excel文件即可。

脚本组件实现备选方案

如果透视组件配置有困难,可采用脚本组件拆分:

  1. 将XML源读取到的单条宽记录(包含fileNo及6个雇员/雇主属性字段)传入脚本组件(转换类型)。
  2. 在脚本组件中创建两个输出:EmployerOutput和EmployeeOutput,输出字段均设置为fileNo、Email、Forename、Surname、Role。
  3. 在ProcessInputRow方法中编写逻辑:
    • 构建雇主记录:赋值fileNo、EmployerEmail、EmployerForename、EmployerSurname,Role设为"雇主",调用AddRow()输出。
    • 构建雇员记录:赋值fileNo、EmployeeEmail、EmployeeForename、EmployeeSurname,Role设为"雇员",调用AddRow()输出。
  4. 合并两个输出(如需写入同一工作表)后,通过Excel目标组件导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:37:21