Excel作为数据源的N宗罪

博客前言:

今年部门里面要求把decommission老系统提上了日程,每个组都有不同的指标。因此前段时间开始了decommission第一个老系统。老系统需要把Excel作为数据源,用VBA去抽取数据。木有各种项目文档,木有各种数据字典。只有一代一代的opration同事手把手的交接。苦啊!于是我们就开始了用Excel作为数据源的漫漫征程。


环境:SQL SERVER 2008, SSIS 2008


罪行描述:

(按罪大恶极程度从上往下排序)

1. 假如Excel某列存储的是带两位小数的数字比如23.72,导入数据库后会变成23.71999999或者科学计数法;

2. 若该列中前几行是存储的正常数字(连续的数字比如87231234),后面有一些数据中间会有一些空格(比如76 21 89 198),或者第一位数是0(比如09823124),后面说的两种情况被导入数据库之后都会被置成null;

3. Excel里面的sheet名字必须固定写死,且不能有空格。


解决方法:

最好将excel转换为听话的csv文件进行处理,在csv里面,将csv导入staging表里面全是基本字符串格式,想咋样就咋样,想干嘛就干嘛。

 在SSIS里面可以用script command的方式引用excel,或者在advanced editor里面进行设置.


结论:

没事的话最好不要将Excel作为数据源,因为里面的单元格格式实在是很多ETL工具难以完美驾驭的,遇到问题即便也能解决,但是也要脱你几层皮,程序员的头发不容易啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值