我有一个string
原始源并进入目标表它是十进制(5,2),我尝试用规则更改它
但是当我运行任务时它总是失败,有人可以帮助我那里有什么问题吗?
更新
我也尝试过(DT_DECIMAL,2)TRIM(NAME1)
,但仍然失败
我有一个string
原始源并进入目标表它是十进制(5,2),我尝试用规则更改它
但是当我运行任务时它总是失败,有人可以帮助我那里有什么问题吗?
更新
我也尝试过(DT_DECIMAL,2)TRIM(NAME1)
,但仍然失败
任务失败可能是某些值无法转换(包含非数值)
在数据转换组件中,您可以将错误输出设置为Ignore failure
then if NAME1
cannot convert to DT_I8
the new column value will beNULL
您可以在这篇有用的博客文章中阅读更多内容:
另一种解决方法
您可以使用 ascript Component
而不是Derived Column
只需添加一个脚本组件,添加一个类型的输出列DT_I8
(假设它的名称是OutColumn
)并将列标记NAME1
为输入。
在脚本窗口中编写以下脚本(使用 Vb.Net):
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub InputBuffer0_ProcessInputRow(ByVal Row As InputBuffer0)
Dim intValue as Int64
If Not Row.NAME1_ISNULL AndAlso
Not String.iSnullOrEmpty(Row.NAME1.Trim) AndAlso
Int64.TryParse(Row.NAME1.Trim, intValue) Then
Row.OutColumn = intValue
Else
Row.OutColumn_IsNull = True
End If
End Sub
End Class
尝试应用 DECIMAL 和 FLOAT 的组合。我对此进行了测试,它奏效了。
(DT_DECIMAL,2)(DT_R4)TRIM(NAME1)
这首先转换为浮点数,然后转换为小数。