我正在使用SSIS将数据从Excel工作表导入SQL Server 2005,该数据包含一些列,这些列的数据应具有同一列中以前的非空单元格的值,如下所示:

2005 | 15 | Something1
     | 12 | Something2
     | 14 | Something3
2006 | 10 | Something4
     |  2 | Something5
     | 18 | Something6
     | 15 | Something7


它应该填写2005年和2006年,但我只能得到null。
如果该字段的值不为null,是否可以将其放在变量中,并用它替换其后的null值?

最佳答案

您将必须在数据流中使用脚本组件并遍历每一行,并使用变量保存最后一个已知值。

更新:这是代码。我在SSIS 2008中的VB中进行了此操作,因此可能需要做一些编辑(例如,您可能必须使用Dts.Variables [“ User :: LastYear”]。Value.ToInt32()而不是Variables.LastYear -我不记得了):

Dim LastYear As Integer

Public Overrides Sub PreExecute()
    MyBase.PreExecute()
    LastYear = 0
End Sub

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    If Row.year_IsNull Then
        Row.year = LastYear
    Else
        LastYear = Row.year
    End If
End Sub


希望这会有所帮助!

10-06 16:14