SSIS 2017导入Excel异常:非日期值未导入的原因咨询
问题原因分析
这是ACE.OLEDB.12.0驱动的类型猜测与数据过滤机制导致的,和SSIS里修改输入输出属性的操作无关,具体逻辑如下:
- ACE.OLEDB读取Excel时,会默认采样前8行数据,判断该列的「主导数据类型」。如果采样结果显示某列多数是日期类型,驱动会直接将该列标记为日期型,并自动过滤掉所有无法识别为日期的内容——包括空格、"na"、"Dispute"这些值,连部分不符合日期格式的空值都会被丢弃。
- 你在SSIS Excel源高级编辑器里把DataType改成DT_WSTR,只是在驱动返回数据之后做类型转换,但驱动本身已经在读取阶段就把非日期值过滤掉了,根本没把这些数据传给SSIS,所以你看不到这些值被导入。
- 本质是ACE.OLEDB为了适配关系型数据的强类型要求,对Excel这种弱类型表格做了强制类型归一化,哪怕后续在ETL工具里修改字段类型,也无法回溯驱动已经过滤掉的数据。
内容的提问来源于stack exchange,提问作者TimC
相关产品推荐
相关产品推荐

