从Excel导入数据到SQL DB SSIS时,Interger列显示NULL

问题描述

我正在使用Excel文件将数据导入sql DB表中。

我的列同时包含Text和Interger数据类型。

在SSIS Excel Source Assistant中预览我的Excel文件时,该整数行显示NULL。

注意:我不需要更改Excel文件中的任何列。

我们可以在SSIS本身中实现吗?

enter image description here

enter image description here

解决方法

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”;