【发布时间】:2012-01-20 19:56:18
【问题描述】:
我遇到以下脚本的索引超出范围错误。我有 1 个输入列和 11 个输出列添加到 SSIS 脚本组件。它们的数据类型都是字符串。不知道我哪里出错了。 提前致谢。
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.Invoices = rowValues.GetValue(0).ToString()
Row.Detail = rowValues.GetValue(1).ToString()
Row.Date = rowValues.GetValue(2).ToString()
Row.Something1 = rowValues.GetValue(3).ToString()
Row.Something2 = rowValues.GetValue(4).ToString()
Row.SomeNumber = rowValues.GetValue(5).ToString()
Row.CustomerName = rowValues.GetValue(6).ToString()
Row.InvoiceNumber = rowValues.GetValue(7).ToString()
Row.InvoiceNumber2 = rowValues.GetValue(8).ToString()
Row.InvoiceNumber3 = rowValues.GetValue(9).ToString()
Row.InvoiceNumber4 = rowValues.GetValue(10).ToString()
End Sub
【问题讨论】:
-
美元到饺子你那里有臭鼬数据。在您的脚本转换中,添加第二个输出(输出 1)以捕获有问题的行。在 Output 1 中添加一列,列名 Line 与现有数据类型匹配。将上面的代码包装在 try/catch 块中。在 catch 部分,添加这两行
Output1Buffer.AddRow()和Output1Buffer.Line = Row.Line将它们定向到文件中或添加数据查看器,看看为什么它无法拆分为预期的大小。
标签: vb.net ssis script-component