SSIS 中Excel数据格式问题解决

  1. 背景

 

很多时候我们在使用微软的SSDT开发SSIS包的时候,经常会向客户推荐共享目录存放线下Excel,我们通过SSIS中的数据流任务中连接Excel数据源来将Excel数据导入到SQL Server 数据库中如下图:

 

但是非常不幸的是也许在开发的过程中你成功的实现了数据导入,但是在后期系统上线后,用户自己上传的Excel却时不时就会爆出各种错误,让你应接不暇,平白无故的增添了诸多的维护时间和成本。

  1. 原因分析

综上所述的原因经过分析,我们不难发现是因为Excel是一种自带列格式的工具,而且我们在用SSIS连接Excel数据源的时候是会同时把Excel的格式读取到,并且根据格式类型自动匹配出列的数据类型,而Excel的格式并没有办法控制用户在上传的时候指定某一种格式上传,往往用户上传的数据常常因为格式无法统一造成我们程序经常报错。

 

 

 

3 .解决方案

3.1 描述

 

基于以上问题,我们知道CSV格式是不带格式的一种数据存储文件,那么我们只需要把Excel转成CSV文件,然后使用SSIS连接CSV文件进行数据处理,即可解决这个问题。

同时,因为CSV中的默认分隔符是","号分隔符,但在Excel中逗号经常作为数据的千分位分隔符:例如下图:

为避免类似逗号引起最终的CSV单元格混乱,我们一般可以使用英文分号";"进行分割。

 

3.2 处理流程

 

第一步:excel转CSV,调用我们已经开发好的转换工具包(参见附件下载)

指定四个参数;

第一个参数:原始Excel文件路径地址。

第二个参数:Excel中sheet名称。

第三个参数:csv中的分割符。

第四个参数:导出的Excel文件地址。

 

 

第二步:在数据流任务中使用转换后的CSV文件

文本限定符指定""".

标题分割符指定:";"

posted @ 2019-02-27 11:12  醉@春风  阅读(576)  评论(1编辑  收藏  举报