暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通用Excel导入到数据库的设计与实现

Sumslack团队 2019-07-23
1087

背景

在企业IT电子化过程中,原有的数据大多保存在传统的Excel文件中,我们需要将原有Excel文件按照一定规则导入到我们的后台管理系统中,以便将数据存储到数据库中做后续分析与处理。

虽然传统的数据库客户端一般都有excel导入工具,但一般都比较简单,只支持简单的字段映射,而且都需手工进行,针对增量的数据和计算字段无能为力,而且数据库工具也无法交付给系统终端使用者使用。所以我们需要设计一款通用的Excel导入程序,使得各个系统都能通过这个模块将各种Excel模板文件中的数据导入到系统中。

那么我们如何设计Excel导入模块,使得在各个项目中都可以使用呢?

设计

通过我们的不断尝试,我们任何以下设计方案可以满足我们Excel存储到数据库的要求:

  1. 在原有的Excel文件中增加一个Sheet页用来定义Excel表格存储到数据库中的规则;

  2. 以类似yml的格式定义这个Sheet,包含了基础的kv配置,字段映射规则,字段执行更新时是否忽略,支持表达式映射,支持自定义函数;

  3. 通过后台管理系统的上传按钮接收客户端的Excel,然后按照定义的sheet页将Excel数据存储到数据库中。

实现

比如笔者需要将Excel中的合同数据存储到数据库中,在其中包含一定的逻辑,原先的Excel做的手工合同数据如下:

其中包括了几十个字段,处理逻辑如下:

  1. 每次数据都是全量导入的;

  2. 合同编号是唯一的;

  3. Excel中的有些列是自动计算出来的,也需要存储到数据库中,因为报表开发中需要用到;

  4. 有些字段只需要insert的时候插入,更新时应该忽略(因为来自其他系统的字段数据更新);

  5. 需要对数据做异常保护,Excel中的数据类型不一定完全准确;

  6. 需要自动创建列,创建表;

  7. 需要对Excel获取的数据做过滤;



我们可以在原来的Excel里插入一个Sheet,定义如下:


通过以上的设置,在客户端选择“导入Excel文件”后,Excel中的数据就会以您定义的规则导入到t_xsht表了。

不是很简单?按这个思路,理论上可支持所有的Excel表格按您的规则导入到数据库中,然后在数据库中利用报表工作开始您的制作报表之旅吧 :)

你可以继续阅读:


一款自动生成后台代码的管理系统的设计与实现 “大”中台,“小”前端的架构演变| 云服务平台中推送服务的设计与实现 | 对微服务的理解以及实现一套微服务对外发布API管理平台 | 项目开发中常用的设计模式整理 | 异构语言调用平台的设计与实现 | 大话正则表达式 | 云API平台的设计与实现 | 个税改了,工资少了,不要慌!文末附计算器


关注我们的公众号 

长按识别二维码关注我们




文章转载自Sumslack团队,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论