阻止SSIS import excel时的默认行为
为什么SSIS总是错误地获取Excel数据类型,以及如何解决它!
由Concentra发布 2013年5月15日
分享此页面
分享

作为具有Microsoft工具堆栈的BI开发人员,我经常处理多个数据源,其中一个是Excel,这是Data Warehousing项目中非常常见的数据源。正如你们中的一些人可能知道的那样,在SSIS(SQL Server Integration Services)中使用Excel会遇到问题,如果你知道这些,这篇文章将更详细地帮助人们并为你提供一些可能的解决方案来帮助你一段时间
此博客还将帮助回答有关以下问题:
- 使用Excel作为源时,为什么SSIS没有正确获取我的数据类型
- 当excel文件包含数据时,为什么我的某些列为NULL
- 如何解决我的Excel源代码问题
- Excel SSIS驱动程序问题
我们在使用SSIS和Excel时遇到的问题的主要驱动因素源于SSIS自动确定连接到Excel源时的数据类型。SSIS Excel驱动程序根据读取前8行的值确定每列的数据类型。
- 如果前8个记录包含相同数量的数字和字符类型 - 则优先级为数字(图1和2中的 column2 )
- 如果大多数前8个记录都是数字,那么它将数据类型指定为数字,所有字符值都读为NULL (图1和2中的 column3 )
- 如果大多数前8个记录都是字符类型,那么它将数据类型指定为字符串,并将所有数值读取为NULL (图1和2中的 column4 )
图1:Excel输入数据
图2:SSIS Excel源组件元数据
图3:SSIS Excel源组件中的“输出预览”窗口
从上面的屏幕截图中可以看出,我们在目标表中收到NULL,我们有数据要加载,这不是所需的输出。那么,我们该如何解决这个问题呢?
通过将IMEX = 1(导入导出模式)属性添加到连接字符串,excel正确读取数据(参见图4)。
设置连接字符串属性如下:
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)
图7:注册表编辑器 - Excel驱动程序TypeGuessRows属性阻止SSIS import excel时的默认行为的更多相关文章
- POI解析Excel时,如何获取单元格样式以及单元格Style的一些操作
最近,公司运营平台需要上传Excel文件并进行解析导入数据库,在开发完成后出现了一个始料不及的生产bug,下面是具体原因: 1.在用POI解析Excel时,默认如果Excel单元格中没有数据,且单元格 ...
- excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution
当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...
- PHP导出excel时数字变为科学计数的解决方法
在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: //在excel.php文件中 $objActSheet = $objPHPExcel-&g ...
- CxGrid导出Excel时清除颜色的设置
CxGrid导出Excel时清除颜色的设置 (2011-04-25 16:33:23) 转载▼ 标签: it 分类: Delphi http://www.radxe.com/?p=170 cxgrid ...
- cmder设置打开时的默认目录
cmder设置打开时的默认目录 打开cmder自动进入工作目录,怎么配置? http://superuser.com/questions/1005285/run-a-bat-file-with-cmd ...
- input 默认值为灰色,输入时清楚默认值
input 默认值为灰色,输入时清楚默认值 <input value="please input your name" onFocus="if(value==def ...
- magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
添加新产品时状态默认为激活 打开文件/app/code/core/Mage/Catalog/Model/Product/Status.php,注释掉“Please Select” /** * Retr ...
- 其他函数:值为NULL时的默认值NVL,DECODE
NVL(列,默认数字值),此函数返回值为数值型,非NULL时返回原始值,NULL时返回默认数字值. DECODE:
- [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
[笔试题目] 使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍? StringBuffer 底层是依赖了一个字符数组才能存储字符 ...
随机推荐
- 牛客网 牛客练习赛7 D. 珂朵莉的无向图(多源BFS)
题目链接 Problem D 比赛的时候完全想不到 直接对给定的这些点做多源$BFS$,把给定的这些点全都压到队列里,然后一个个做. 最后统计被访问的点的个数即可. #include <bit ...
- Careercup | Chapter 3
3.1 Describe how you could use a single array to implement three stacks. Flexible Divisions的方案,当某个栈满 ...
- BT网络中DHT和UPnp的解释(转)
DHT 类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个 ...
- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
一.背景 最近的项目在用maven 进行install的时候,发现老师在控制台输出警告:[WARNING] Using platform encoding (UTF-8 actually) to co ...
- Windows系统文件详解【大全】
这是网络上转载的一篇文章,找不到原创的出处了--详细的介绍了WINDOWS系统文件的用途,我想各位保存一份以后说不定会有用吧,呵呵..这里按A到Z为大家分好类了,查询的话可以按键盘的Ctrl+F进行搜 ...
- 强大的开源网络侦查工具:IVRE
IVRE简介 IVRE(又名DRUNK)是一款开源的网络侦查框架工具,IVRE使用Nmap.Zmap进行主动网络探测.使用Bro.P0f等进行网络流量被动分析,探测结果存入数据库中,方便数据的查询.分 ...
- C#使用反射机制获取类信息[转]
http://www.cnblogs.com/zhoufoxcn/archive/2006/10/31/2515873.html 1.用反射动态创建类实例,并调用其公有成员函数. //新建一个类库项目 ...
- python3 查看已安装的模块
一.命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交互解释器中使用help()查看 在交互式解释器中输入>>> help(&qu ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料
机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008 ...
- 无法安装 golang.org/x/tools/的库
安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误. 而ht ...