SSIS外部源首行记录为空导入到数据库表中失败

0
SSIS 将Excel中的数据导入到数据库表中,当Excel中某字段的首行记录为空时,导入失败:
 
数据流如下:

001.png

Excel中的数据如下:

002.png

数据库表中的字段为 赎回日期 date null 类型
SSIS自行失败描述:

003.png

[SRC_EXCEL_FILE_Invest [87]] 错误: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”失败,错误代码为 0xC0209072,而且针对“SRC_EXCEL_FILE_Invest.输出[Excel 源输出].列[赎回日期]”的错误行处理设置指定一旦出错就失败。在指定组件的指定对象上出错。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
 
可见是“赎回日期”这一列出了问题,直接在源控件中就中断了~~~~
 
修改Excel数据,在赎回日期列的首行增加一个日期,则能执行成功:

004.png


005.png

 
我又试了一下,将Excel源的错误输出设置为忽略错误,能执行成功,但是有赎回日期的纪录中的赎回日期也被忽略了,如下图:

007.png

 
综上,问题就出在当Excel源的首行记录如果有空值,如何处理能让源控件数据进入呢?
还请各位多多指教,谢谢~
 
 
已邀请:
0

Bob - 同程旅游大数据+BI 架构师 2016-07-06 回答

SSIS在读取excel文件时会根据首行来判断数据类型及长度。
 
尝试进行如下做法:在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

要回复问题请先登录注册