【发布时间】:2018-05-06 15:44:57
【问题描述】:
我在 SSIS 工作。我有一个平面文件,其中一列提供输出 24 列的脚本任务。我的脚本任务抛出此错误:
System.InvalidCastException:从字符串“IB”到类型“Single”的转换无效。 ---> System.FormatException: 输入字符串的格式不正确。
我的平面文件连接字符串、输入列和所有输出列都设置为 unicode 字符串。
我的VB.Net代码如下:
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
If Not Row.Column0_IsNull AndAlso
Not String.IsNullOrEmpty(Row.Column0.Trim) Then
Dim strColumns As String() = Row.Column0.Split(CChar(";"))
If strColumns.Length <> 17 Then Exit Sub
Output0Buffer.AddRow()
Output0Buffer.Column = strColumns(0)
Output0Buffer.Column1 = strColumns(1)
Output0Buffer.Column2 = strColumns(2)
Output0Buffer.Column3 = strColumns(3)
Output0Buffer.Column4 = strColumns(4)
Output0Buffer.Column5 = strColumns(5)
Output0Buffer.Column6 = strColumns(6)
Output0Buffer.Column7 = strColumns(7)
Output0Buffer.Column8 = strColumns(8)
Output0Buffer.Column9 = strColumns(9)
Output0Buffer.Column10 = strColumns(10)
Output0Buffer.Column11 = strColumns(11)
Output0Buffer.Column12 = strColumns(12)
Output0Buffer.Column13 = strColumns(13)
Output0Buffer.Column14 = strColumns(14)
Output0Buffer.Column15 = strColumns(15)
Output0Buffer.Column16 = strColumns(16)
End If
End Sub
据我所知,我没有在我的代码或连接字符串中的任何地方使用浮点数或单个字符。
代码抛出如下异常:
从字符串“IB”到类型“Single”的转换无效。
在 Microsoft.VisualBasic.CompilerServices.Conversions.ToSingle(字符串值,NumberFormatInfo NumberFormat) 在 SC_5230962b79f144d082bc4f4027a93d01.ScriptMain.Input0_ProcessInputRow(Input0Buffer 行) 在 SC_5230962b79f144d082bc4f4027a93d01.UserComponent.Input0_ProcessInput(Input0Buffer 缓冲区) 在 SC_5230962b79f144d082bc4f4027a93d01.UserComponent.ProcessInput(Int32 InputID,字符串 InputName,PipelineBuffer 缓冲区,OutputNameMap OutputMap) 在 Microsoft.SqlServer.Dts.Pipeline.ScriptComponent.ProcessInput(Int32 InputID,PipelineBuffer 缓冲区) 在 Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer 缓冲区)
异常窗口显示这是在我的脚本任务中,但代码开头的断点似乎从未被触发。
提前感谢您的帮助。
大卫
【问题讨论】:
-
异常发生在哪一行?你看过异常吗?你调试过代码吗?