Convert String to Int SSIS

Gerardo picture Gerardo · May 12, 2017 · Viewed 11.7k times · Source

I have an string of original source and into destination table It was decimal(5,2), I try to change it with a rule

enter image description here

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

Answer

Hadi picture Hadi · May 13, 2017

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

enter image description here

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