【问题标题】:Importing data from Excel in SSIS, empty values在 SSIS 中从 Excel 导入数据,空值
【发布时间】:2009-05-02 19:56:59
【问题描述】:

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

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

它应该填写 2005 和 2006,但我能得到的只是空值。 如果这个字段的值不为空,我可以把它放在一个变量中,并用它来替换它后面的空值吗?

【问题讨论】:

    标签: excel ssis


    【解决方案1】:

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

    更新:这是代码。我在 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
    

    希望这会有所帮助!

    【讨论】:

    • 很好的解决方案,我还使用脚本组件“为每一行”做了许多其他很酷的事情!
    • 很高兴你喜欢它,但不要对脚本组件过于疯狂。请记住,它遍历 每一 行。这意味着它非常非常低效。如果你能成套做某事,那就成套做。仅将其用于需要迭代的内容(如当前示例)。
    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多