• 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文件

    文本限定符指定""".

    标题分割符指定:";"

  • 相关阅读:
    IIS 下配置无后缀的URL ReWrite
    获得代理IP或客户端Ip
    asp.net发送邮箱
    URLRewrite伪静态与AspNetPager分页控件的结合
    邮箱大全
    注册表单验证正则表达式
    aspx中伪静态的实现
    JMail发送邮件
    IE 6中负的margin值导致出界部分不显示问题的解决
    Culminis为每个用户组提供的免费TechNet Plus Direct订阅
  • 原文地址:https://www.cnblogs.com/lxy131/p/10442406.html
Copyright © 2020-2023  润新知