2011-06-21 113 views
0

我有这个SSIS包昨天工作,现在我得到这个错误,没有改变过夜。SSIS 2008:派生列将字符串转换为日期数据类型

基本上我得到的字符串看起来像:yyyymmdd,我需要将其转换为日期数据类型。所以我采取子串,得到yyyy/mm/dd然后把它转换成日期类型。

的路径:

平面文件源---> 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)) 
相关问题