Concentra的分析和商业智能团队将信息转化为洞察力,从而为您提供数据优点。学到更多。编辑器
做为具备Microsoft工具堆栈的BI开发人员,我常常处理多个数据源,其中一个是Excel,这是Data Warehousing项目中很是常见的数据源。正如大家中的一些人可能知道的那样,在SSIS(SQL Server Integration Services)中使用Excel会遇到问题,若是你知道这些,这篇文章将更详细地帮助人们并为你提供一些可能的解决方案来帮助你一段时间ide
此博客还将帮助回答有关如下问题:工具
咱们在使用SSIS和Excel时遇到的问题的主要驱动因素源于SSIS自动肯定链接到Excel源时的数据类型。SSIS Excel驱动程序根据读取前8行的值肯定每列的数据类型。spa
图1:Excel输入数据excel
图2:SSIS Excel源组件元数据code
图3:SSIS Excel源组件中的“输出预览”窗口orm
从上面的屏幕截图中能够看出,咱们在目标表中收到NULL,咱们有数据要加载,这不是所需的输出。那么,咱们该如何解决这个问题呢?blog
经过将IMEX = 1(导入导出模式)属性添加到链接字符串,excel正确读取数据(参见图4)。ci
设置链接字符串属性以下:
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:Folder1Book1.xls; Extended Properties =“EXCEL 8.0; HDR = YES; IMEX = 1”;
图4:SSIS Excel链接管理器链接字符串属性
添加此属性后,excel驱动程序将具备混合类型的列读取为Unicode String数据类型(请参见图5)并正确读取数据(请参见图6)。
图5:SSIS Excel源组件MetadatA
图6:SSIS Excel源组件中的输出预览窗口,IMEX = 1
此外,在excel文件中前8行为NULL的状况下,咱们须要编辑注册表设置并将TypeGuessRows属性设置为0,以便让excel驱动程序使用文件中的全部行来正确地肯定数据类型(请参阅图7)经过对全部行而不是第1行进行采样。此属性容许的值范围为0-16。所以,咱们能够将1-16行或全部行做为容许的样本大小。
须要更改的密钥的位置以下:
HKEY_LOCAL_MACHINE - > SOFTWARE - > Wow6432Node - > Microsoft - > Jet - > 4.0 - > Engines - > Excel - > TypeGuessRows的值为0.(默认状况下包含8)