2011-06-21 3 views
0

У меня был пакет SSIS, который работал вчера, и теперь я получаю эту ошибку без изменений за одну ночь.SSIS 2008: производная колонка Преобразование строки в дату Тип данных

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

Путь:

Flat File Source ---> 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)) 

Ниже приведена ошибка:

Error: 0xC0049064 at Extract EXD data from Flatfile into YD db 1, Derived Column [3352]: An error occurred while attempting to perform a type cast.

Error: 0xC0209029 at Extract EXD data from Flatfile into YD db 1, Derived Column [3352]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "component "Derived Column" (3352)" failed because error code 0xC0049064 occurred, and the error row disposition on "input column "PolicyExpire" (3368)" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

Error: 0xC0047022 at Extract EXD data from Flatfile into YD db 1, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Derived Column" (3352) failed with error code 0xC0209029 while processing input "Derived Column Input" (3353). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

ответ

0

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

+0

Да, это так. Спасибо за помощь. –

0

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

1

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

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

SUBSTRING ([PolicyExpire], 5,2)

вместо

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

Третий параметр подстрочной функции: LENGTH подстроки, чтобы найти (в данном случае 2), а не END POSITION подстроки.

Попробуйте

(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)) 
Смежные вопросы