我昨天使用了这个SSIS包,现在我收到了这个错误,一夜之间没有变化。
基本上我得到的字符串看起来像:yyyymmdd,我需要将其转换为日期数据类型。所以我采用子串,得到yyyy / mm / dd然后将其转换为日期类型。
路径:
平面文件来源---> Dervied Column --->我的所有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))
这是错误:
错误:提取EXD数据时出现0xC0049064 从Flatfile到YD db 1,Derived 列[3352]:发生错误 试图进行类型转换。
错误:提取EXD数据时出现0xC0209029 从Flatfile到YD db 1,Derived 列[3352]:SSIS错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “组件”派生列“ (3352)“失败,因为错误代码 发生0xC0049064,错误行 对“输入栏”的处理 “PolicyExpire”(3368)“指定 错误失败。发生错误 指定的指定对象 零件。可能有错误 之前发布的消息有更多 有关失败的信息。
错误:提取EXD数据时出现0xC0047022 从Flatfile到YD db 1, SSIS.Pipeline:SSIS错误代码 DTS_E_PROCESSINPUTFAILED。该 组件上的ProcessInput方法 “Derived Column”(3352)失败了 处理时出错代码0xC0209029 输入“派生列输入”(3353)。 已识别的组件返回了 ProcessInput方法的错误。 该错误特定于 组件,但错误是致命的 将导致数据流任务停止 运行。可能有错误消息 在此之前发布更多 有关失败的信息。
答案 0 :(得分: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))
答案 1 :(得分:0)
据推测,您尝试导入的数据今天有所不同。您的文本文件数据源是否存在昨天不存在的问题?
答案 2 :(得分:0)
上面的转换没有考虑NULL。检查[PolicyExpire]是否在其中一个记录中具有NULL值。