注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

012 如何处理待导入数据库的EXCEL  

2012-01-06 13:24:53|  分类: 我的实验室 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  • 我们为什么要做系统?

系统出现之前,我们的用户很多是通过EXCEL来记录数据的。强大的EXCEL已远远满足他们日常工作的需要,他们可以随心所欲的操作数据,例如,数据的拖拉,SHEET数据关联,任意第修改复制粘贴等等,但是这种操作方式有个最大缺陷是无法及时共享资源。试想,每个人都在自己的电脑上操作自己的EXCEL文件,没有任何限制,当需要把所有EXCEL做汇总的时候,问题就来了,数据格式的错误、数据不完整性、数据的重复等等,想到这些让人头痛,即使最终汇总出来一份数据,它的准确性还是让人怀疑的。于是领导层终于下定决心要求开发一套系统来管控。

  • 出现的问题 

当我们开发者花了足够的精力完成了项目,并且把它交付给了用户,紧接着麻烦来了。我们得到的反馈是,用户并不乐意去维护基础资料,试想一直习惯于EXCEL的操作突然转向到系统里面操作,最基层的用户观念上通常是抵触的,因为他们需要完成所有基础数据的录入。如果在这时没有领导的支持,项目是很难推行下去的。

  • 想到的办法

对于这样的问题,项目管理员想到了一个折衷的办法,上线前提供一次基础数据导入的协助工作,直接通过EXCEL把基础数据导入进数据库,以此减轻用户的前期工作。

  • 再次出现问题

基层的用户欢呼了,终于不要自己一条一条的录入数据了。但是别忘了数据的整理工作还是要他们来做的,于是烦恼的事情最终又推到了项目管理员头上。当管理者从各个基层用户收集回来EXCEL时,他们看到提供的数据哭笑不得。即使你提供了一份很简明的EXCEL格式给用户,拿回来的依然有很多错误。最大的问题还是数据格式错误,例如,EXCEL中某一列应该要求是日期格式,但他们用汉字、或者其他很奇怪的字符来记录,甚至你会惊讶的看到这样的日期“2010-6-31“,“2011-2-30",其他的如金额里面出现了汉字,客户名称、地址多了很多不必要的空格。即使你跟用户说,如果某一列没有数据,就请空白不用填写,可是他们会好心地帮你加上一个字“无”,你真的无语。因为这是从各个区域的用户拿来的数据,当汇总在一个EXCEL准备导入时,各种错误堆积在一起,你终于要奔溃了,难道再发回去让他们重新修改后吗,可你能保证这些问题不再出现吗?所以,问题来了,我们需要处理。

  • 等待处理问题
    我们必须要对EXCEL做一个中转处理,把发现的不合理的数据做更正。比如修正日期,去除多余的字符,空白等。
  • 如何对EXCEL处理?

1.检查提供的数据是否有重复,例如,客户编号是唯一的。
2.如果数据行数很多,分成几个EXCEL导入。在导入过程中也许会发生意外事情,分批导入是个不错的选择,记得加一个标识的字符用来判断是哪一批导入的,也可以用来对结果做诊断,最后不用时再把他们删除掉;
3.一般最常出现错误的地方是在日期格式、金额格式上;
4.替换单元格里面多余的空格,注意不要把日期时间之间的空格替换了。
5.替换“无”字等其他没用的汉字。
6.替换日期列中“/”和“.”为“-”,去除没用的日期值。
7.数字0和字母O的区别,数字1和小写字母L的区别,有时有些用户会写错,如果字段是一个数值类型,字母是没法保存的,因此你也需要对此检查一遍,可以用查找替换的方法。
8.EXCEL导入进系统后,要检查所有行数和数据表中记录结果。看数量是否相等,如果有遗漏要查找原因并补全。例如,有一次,导入过程中数据库提示了一个“错误的参数”但并没有提示具体行号,我选择了继续导入,导入完毕后,我查找到那条遗漏的记录,发现原来是日期格式不对,比如目标日期应该是“2012-01-01”,但EXCEL里写的是“20120101”。
9.对于每批导入过程中出现错误的记录,可以在EXCEL全部资料导入之后,把错误的记录更正后再导入。

  • 扩展

1.在EXCEL模板中限制日期列和金额列的录入格式,当用户在EXCEL中录入错误的格式时,限制用户的输入。
2.新建一个软件按一些替换规则对EXCEL处理。
3.如果提供给用户的EXCEL是在现有资料基础上补录一些资料时,可以把不希望用户修改的列禁用,以防止用户误操作。
4.若是针对现有数据表A中记录做更新,新建同名数据表TBL备份现有记录,再新建一个同名的数据表TBL_DEMO,将EXCEL更新后的资料导入到表TBL_DEMO中,检查无误后,删除旧表A中记录,把表TBL_DEMO中记录导入表A,最后删除表TBL和表TBL_DEMO。

  • 几个数据库脚本参考

提示:表名来源参考“扩展”中的第4条。
1)备份旧表记录
INSERT INTO tbl
   SELECT *
     FROM A

2)查找出现重复的记录
SELECT *
  FROM tbl_demo
 WHERE custid IN (SELECT   custid
                       FROM tbl_demo
                   GROUP BY custid
                     HAVING COUNT (custid) > 1)

3)删除重复的记录
DELETE FROM tbl_demo
      WHERE custid IN (SELECT   custid
                            FROM tbl_demo
                        GROUP BY custid
                          HAVING COUNT (custid) > 1)

4)查找遗漏的记录
SELECT a.*
  FROM tbl a
 WHERE NOT EXISTS (SELECT 1
                     FROM tbl_demo
                    WHERE partner = a.custid)

  评论这张
 
阅读(937)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017