SSIS 2008: производный столбец преобразует строку в тип данных Date - PullRequest
0 голосов
/ 21 июня 2011

Вчера у меня работал этот пакет служб SSIS, и теперь я получаю эту ошибку без изменений в одночасье.

В основном я получаю строку, которая выглядит следующим образом: yyyymmdd, мне нужно преобразовать ее в тип данных Date. Поэтому я беру подстроки, чтобы получить гггг / мм / дд, затем приведу их к типу даты.

Путь:

Источник плоских файлов ---> Столбец Dervied ---> Все мои задачи по интеграции / вставке пакета служб SSIS

Вот выражения:

(DT_DATE)(SUBSTRING([PolicyExpire],1,4) + "/" + SUBSTRING([PolicyExpire],5,6) + "/" + SUBSTRING([PolicyExpire],7,8))
(DT_DATE)(SUBSTRING([BirthDate],1,4) + "/" + SUBSTRING([BirthDate],5,6) + "/" + SUBSTRING([BirthDate],7,8))
(DT_DATE)(SUBSTRING([DLIssueDate],1,4) + "/" + SUBSTRING([DLIssueDate],5,6) + "/" + SUBSTRING([DLIssueDate],7,8))

Вот ошибка:

Ошибка: 0xC0049064 при извлечении данных EXD Из Flatfile в YD db 1, Производный Столбец [3352]: ошибка произошла во время пытаясь выполнить приведение типа.

Ошибка: 0xC0209029 при извлечении данных EXD Из Flatfile в YD db 1, Производный Столбец [3352]: код ошибки служб SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. "Компонент" Производная колонка " (3352) "не удалось, потому что код ошибки 0xC0049064 произошла ошибка и строка расположение на входной колонке «PolicyExpire» (3368) »указывает ошибка по ошибке. Произошла ошибка указанный объект указанного составная часть. Там может быть ошибка сообщения, опубликованные до этого с более информация о сбое.

Ошибка: 0xC0047022 при извлечении данных EXD из Flatfile в YD db 1, SSIS.Pipeline: код ошибки SSIS DTS_E_PROCESSINPUTFAILED. Метод ProcessInput для компонента «Производная колонка» (3352) не удалась с код ошибки 0xC0209029 при обработке вход «Вход производного столбца» (3353). Идентифицированный компонент возвратил ошибка метода ProcessInput. Ошибка относится к компонент, но ошибка является фатальной и приведет к остановке задачи потока данных Бег. Там могут быть сообщения об ошибках размещено до этого с более информация о сбое.

Ответы [ 3 ]

1 голос
/ 19 июля 2012

Ваши параметры подстроки неверны для части месяца и дня даты.

Например, должно быть

SUBSTRING ([PolicyExpire], 5,2 )

вместо

SUBSTRING ([PolicyExpire], 5,6 ), чтобы получить значение месяца.

Третьим параметром функции подстроки является ДЛИНА подстроки для поиска (в данном случае 2), а не КОНЕЦ ПОЛОЖЕНИЯ подстроки.

Попробуйте это

(DT_DATE)(SUBSTRING([PolicyExpire],1,4) + "/" + SUBSTRING([PolicyExpire],5,2) + "/" + SUBSTRING([PolicyExpire],7,2))

(DT_DATE)(SUBSTRING([BirthDate],1,4) + "/" + SUBSTRING([BirthDate],5,2) + "/" + SUBSTRING([BirthDate],7,2))

(DT_DATE)(SUBSTRING([DLIssueDate],1,4) + "/" + SUBSTRING([DLIssueDate],5,2) + "/"  + SUBSTRING([DLIssueDate],7,2))
0 голосов
/ 21 июня 2011

Приведенные выше преобразования не учитывают NULL.Проверьте, имеет ли [PolicyExpire] значение NULL в одной из записей.

0 голосов
/ 21 июня 2011

Предположительно, данные, которые вы пытаетесь импортировать, отличаются сегодня. Есть ли проблема с вашим источником данных в текстовом файле сегодня, которого там не было вчера?

...