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

在SSIS中处理Excel非结构化数据:合并单元格填充需求

解决SSIS中Excel合并单元格拆分后NULL值填充问题

针对Excel合并单元格导入SSIS后出现NULL值的问题,提供两种可行的解决方案:

方案一:导入SQL后用T-SQL修复数据

直接在源表tbl_e1上执行T-SQL语句,一次性完成所有填充需求:

  1. 填充ID=1的Dept2列
UPDATE tbl_e1 
SET Dept2 = Dept1 
WHERE ID = 1;
  1. 向前填充Dept2列的垂直合并NULL值
    使用CTE结合窗口函数,将上一行非NULL的Dept2值填充到当前NULL行:
WITH Dept2_Fill AS (
    SELECT 
        ID,
        Dept2,
        LAST_VALUE(Dept2) OVER (ORDER BY ID ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Filled_Dept2
    FROM tbl_e1
)
UPDATE Dept2_Fill
SET Dept2 = Filled_Dept2
WHERE Dept2 IS NULL;
  1. 向前填充Value列的垂直合并NULL值
    同理处理Value列:
WITH Value_Fill AS (
    SELECT 
        ID,
        Value,
        LAST_VALUE(Value) OVER (ORDER BY ID ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Filled_Value
    FROM tbl_e1
)
UPDATE Value_Fill
SET Value = Filled_Value
WHERE Value IS NULL;

执行完成后,将tbl_e1的数据插入到目标表tbl_e2即可。

方案二:SSIS数据流中用脚本组件实时处理

如果需要在数据流中直接处理,使用**脚本组件(转换)**而非控制流的脚本任务,步骤如下:

  1. 在数据流中添加脚本组件,选择“转换”类型,输入列勾选ID, Name, Dept1, Dept2, Value。
  2. 在脚本编辑器中,声明两个变量用于保存上一行的非NULL值:
private string lastDept2;
private int? lastValue;
  1. 重写PreExecute方法初始化变量:
public override void PreExecute()
{
    base.PreExecute();
    lastDept2 = string.Empty;
    lastValue = null;
}
  1. 重写ProcessInputRow方法,处理每行数据:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    // 处理ID=1的Dept2填充
    if (Row.ID == 1 && Row.Dept2_IsNull)
    {
        Row.Dept2 = Row.Dept1;
    }

    // 处理Dept2的向前填充
    if (!Row.Dept2_IsNull)
    {
        lastDept2 = Row.Dept2;
    }
    else
    {
        Row.Dept2 = lastDept2;
    }

    // 处理Value的向前填充
    if (!Row.Value_IsNull)
    {
        lastValue = Row.Value;
    }
    else
    {
        if (lastValue.HasValue)
        {
            Row.Value = lastValue.Value;
        }
    }
}
  1. 配置完成后,将脚本组件的输出连接到目标表tbl_e2的导入组件。

注意事项

  • 使用T-SQL方案时,确保ID列是按Excel源的行顺序排序的,否则向前填充会出错。
  • SSIS脚本组件方案中,要确保数据流是按ID顺序处理的,避免乱序导致填充错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:32