问题描述
我的列同时包含Text和Interger数据类型。
在SSIS Excel Source Assistant中预览我的Excel文件时,该整数行显示NULL。
注意:我不需要更改Excel文件中的任何列。
我们可以在SSIS本身中实现吗?
解决方法
Excel驱动程序在指定的源中读取一定数量的行(默认情况下为8行)以猜测每一列的数据类型。当一列显示为包含混合数据类型,尤其是数字数据与文本数据混合时,驱动程序将决定采用多数数据类型,并为包含其他类型数据的单元格返回空值。
因此,对于此问题,此行为是设计使然。为解决此问题,我们在“属性”窗口的Excel连接管理器的连接字符串中,将“扩展属性”的值添加了IMEX = 1。
对于.xlsx文件,Excel Connection Manager的连接字符串类似于: Provider = Microsoft.ACE.OLEDB.12.0;数据源= C:\ Temp \ Test.xlsx;扩展属性=“ Excel 12.0 XML; HDR = YES; IMEX = 1”;
对于.xls文件,Excel Connection Manager的连接字符串类似于: Provider = Microsoft.Jet.OLEDB.4.0;数据源= C:\ Temp \ Test.xls;扩展属性=“ Excel 8.0; HDR = YES; IMEX = 1”;