Преобразовать строку в 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)
Это сначала конвертируется в число с плавающей точкой, а затем в десятичную.