Reputation: 369
I have an string
of original source and into destination table It was decimal(5,2), I try to change it with a rule
But when I run task It always fail, can someone help me what is wrong there?
Update
I also try (DT_DECIMAL,2)TRIM(NAME1)
but It still fail
Upvotes: 3
Views: 21419
Reputation: 37313
The task failure may be caused by some values that cannot be converted (contains non-numeric value)
In the Data Conversion component you can set the error output to Ignore failure
then if NAME1
cannot converted to DT_I8
the new column value will be NULL
You can read more in this useful blog article:
Another WorkAround
You can achieve this using a script Component
instead of Derived Column
Just add a script component , add an output column of type DT_I8
(assuming it's name is OutColumn
) and mark NAME1
column as Input.
Inside the script window write the following script (using 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
Upvotes: 4
Reputation: 526
Try applying a combination of DECIMAL and FLOAT. I tried a test of this and it worked.
(DT_DECIMAL,2)(DT_R4)TRIM(NAME1)
This first converts to a float and then to a decimal.
Upvotes: 1