3

我有一个string原始源并进入目标表它是十进制(5,2),我尝试用规则更改它

在此处输入图像描述

但是当我运行任务时它总是失败,有人可以帮助我那里有什么问题吗?

更新

我也尝试过(DT_DECIMAL,2)TRIM(NAME1),但仍然失败

4

2 回答 2

4

任务失败可能是某些值无法转换(包含非数值)

在数据转换组件中,您可以将错误输出设置为Ignore failurethen if NAME1cannot convert to DT_I8the 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
于 2017-05-12T22:03:10.957 回答
1

尝试应用 DECIMAL 和 FLOAT 的组合。我对此进行了测试,它奏效了。

(DT_DECIMAL,2)(DT_R4)TRIM(NAME1)

这首先转换为浮点数,然后转换为小数。

于 2017-05-12T16:14:12.553 回答