Преобразовать строку в Int SSIS

У меня есть string из исходного источника и в таблицу назначения Он был десятичным (5,2), я пытаюсь изменить его с помощью правила

Но когда я запускаю задачу, она всегда терпит неудачу, может ли кто-нибудь помочь мне, что там не так?

Обновить

Я тоже стараюсь (DT_DECIMAL,2)TRIM(NAME1) но все равно не получится

2 ответа

Решение

Ошибка задачи может быть вызвана некоторыми значениями, которые нельзя преобразовать (содержит нечисловое значение)

В компоненте "Преобразование данных" вы можете настроить вывод ошибок на Ignore failure тогда если NAME1 не может быть преобразован в DT_I8 новое значение столбца будет NULL

Вы можете прочитать больше в этой полезной статье блога:

Другая работа

Вы можете достичь этого, используя script 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)

Это сначала конвертируется в число с плавающей точкой, а затем в десятичную.

Другие вопросы по тегам