SSIS外部源首行记录为空导入到数据库表中失败
0
SSIS 将Excel中的数据导入到数据库表中,当Excel中某字段的首行记录为空时,导入失败:
数据流如下:
Excel中的数据如下:
数据库表中的字段为 赎回日期 date null 类型
SSIS自行失败描述:
[SRC_EXCEL_FILE_Invest [87]] 错误: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”失败,错误代码为 0xC0209072,而且针对“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”的错误行处理设置指定一旦出错就失败。在指定组件的指定对象上出错。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
可见是“赎回日期”这一列出了问题,直接在源控件中就中断了~~~~
修改Excel数据,在赎回日期列的首行增加一个日期,则能执行成功:
我又试了一下,将Excel源的错误输出设置为忽略错误,能执行成功,但是有赎回日期的纪录中的赎回日期也被忽略了,如下图:
综上,问题就出在当Excel源的首行记录如果有空值,如何处理能让源控件数据进入呢?
还请各位多多指教,谢谢~
数据流如下:
Excel中的数据如下:
数据库表中的字段为 赎回日期 date null 类型
SSIS自行失败描述:
[SRC_EXCEL_FILE_Invest [87]] 错误: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”失败,错误代码为 0xC0209072,而且针对“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”的错误行处理设置指定一旦出错就失败。在指定组件的指定对象上出错。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
可见是“赎回日期”这一列出了问题,直接在源控件中就中断了~~~~
修改Excel数据,在赎回日期列的首行增加一个日期,则能执行成功:
我又试了一下,将Excel源的错误输出设置为忽略错误,能执行成功,但是有赎回日期的纪录中的赎回日期也被忽略了,如下图:
综上,问题就出在当Excel源的首行记录如果有空值,如何处理能让源控件数据进入呢?
还请各位多多指教,谢谢~
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
Bob - 同程旅游大数据+BI 架构师 2016-07-06 回答
赞同来自:
尝试进行如下做法:在excel源上右键—属性,编辑excel的链接字符串:
在原有的链接字符串末尾追加IMEX=1
例如:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1";
HDR=Yes;”指示第一行包含列名称,但不包含数据;“IMEX=1;”指示驱动程序始终将“intermixed”数据列作为文本进行读取。
参考官方文档:
https://msdn.microsoft.com/zh-cn/library/ms254500(v=vs.110).aspx