【发布时间】:2020-09-25 06:07:40
【问题描述】:
我正在使用 Excel 文件将数据导入 SQL DB 表中。
我的专栏同时包含 Text 和 Interger 数据类型。
在 SSIS Excel Source Assistant 中预览我的 Excel 文件时,该整数行显示为 NULL。
注意:我不需要更改 Excel 文件中的任何列。
我们可以在 SSIS 本身中实现这一点吗?
【问题讨论】:
我正在使用 Excel 文件将数据导入 SQL DB 表中。
我的专栏同时包含 Text 和 Interger 数据类型。
在 SSIS Excel Source Assistant 中预览我的 Excel 文件时,该整数行显示为 NULL。
注意:我不需要更改 Excel 文件中的任何列。
我们可以在 SSIS 本身中实现这一点吗?
【问题讨论】:
Excel 驱动程序读取指定源中的一定数量的行(默认为 8 行)来猜测每列的数据类型。当一列似乎包含混合数据类型,尤其是数字数据与文本数据混合时,驱动程序会决定支持多数数据类型,并为包含其他类型数据的单元格返回空值。
因此,关于此问题,此行为是设计使然。为了解决这个问题,我们将 IMEX=1 添加到属性窗口中 Excel 连接管理器的连接字符串中的扩展属性值中。
对于 .xlsx 文件,Excel 连接管理器的连接字符串如下: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Test.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES;IMEX=1";
对于 .xls 文件,Excel 连接管理器的连接字符串如下: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Test.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1";
【讨论】: