SSIS脚本组件

时间:2012-01-16 21:47:20

标签: vb.net sql-server-2008 ssis

我发现这段代码适用于我的输入(一串CSV)。包运行正常,但我没有得到5列输出,我只得到2列。我在脚本组件中添加了其他列,并将其数据类型更改为合适的列。输入为643492,PV STRIP 1X1 UTILITY UP ,, 67.5,393446。在整个字符串中,我只在一列中获得643492而在另一列中获得PV STRIP 1X1 UTILITY UP。其余的字符串出来空白不明白为什么。专家友好的帮助。我对.net一无所知,我也是SQL Server的新手。

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim strRow As String
    Dim strColSeperator As String
    Dim rowValues As String()
    strRow = Row.Line.ToString()
    If strRow.Contains(",") Then
        strColSeperator = (",")
    ElseIf strRow.Contains(";") Then
        strColSeperator = ";"
    End If

    rowValues = Row.Line.Split(CChar(strColSeperator))
    Row.Code = rowValues.GetValue(0).ToString()
    Row.Description = rowValues.GetValue(1).ToString()

End Sub

1 个答案:

答案 0 :(得分:1)

您似乎只将前两个值分配给缓冲区行。代码段的最后两行是进行分配的位置。您的rowValues数组应包含基于您在示例中提供的字符串Split()的5个值。您可以使用GetValue(index)方法分配它们。对阵列的索引3到5执行此操作。

字符串值如上所示:

Row.FieldName = rowValues.GetValue(0).ToString()

其中Code是字段的名称,0是数组中值的从零开始的索引。

对于整数,您可以执行以下操作:

Row.FieldName = Convert.ToInt32(rowValues.GetValue(3))

您可以使用其他Convert方法转换为所需的输出类型。 See MSDN for reference.