Excel通过POI大数据导入数据库通用方案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、总体设计思路错误!未指定书签。

二、导入规则表设计错误!未指定书签。

1、数据导入表规则错误!未指定书签。

2、数据导入列规则错误!未指定书签。

三、导入规则类设计错误!未指定书签。

四、界面设计错误!未指定书签。

1、规则配置界面错误!未指定书签。

2、导入数据界面错误!未指定书签。

五、导入逻辑错误!未指定书签。

六、内部评审补充错误!未指定书签。

此文档仅为设计方案,如要查看具体实现,请联系我所要源码

通用导入设计方案

一、总体设计思路

考虑到导入在项目中应用较多,随后其他项目中都会用到,为了减少重复工作,不必因为的样式、数据等变化而重新编码,重复劳动,因此必须抽取通用的东西出来,封装共同点,暴露个性点,使用时只需要关注相关业务,而不必关注的读取和存储。考虑到这个情况,可以使用规则配置来解决这个问题。配置规则的时候,需要配置要导入的表,字段等信息,导入的时候依据这个规则将数据导入到数据库中。这样一来,在进行导入时候只需要为某种数据配置一个规则,然后调用封装的导入类就可以完成整个导入的工作了。

实现源码参见

二、导入规则表设计

1、数据导入表规则

(1):数据表唯一标识,没有业务含义;

(2):创建时间;

(3):规则名称;

(4):数据读取结束标识,标识遇到空行结束,数字N表示读取到第N行结束;

(5):标题行索引,默认值为1,表示第一行是标题行;(6):数据开始行索引,默认值为2,表示第2行开始是正式数据;

(7):表名称,表示这个规则是针对这个表的数据导入定义的;(8):是否删除重复行,即是否导入重复数据,0则不删除,直接导入,1则先删除重复数据,然后再导入;是否重复

根据规则表的字段来判定,重复行是指数据库中存在及中

相同的数据;

(9):有效标识;

2、数据导入列规则

(1):数据表唯一标识,没有业务含义;

(2):表的主键,表示这条列规则是属于哪个表的规则;(3):是否是主键;

(4):数据生成策略,导入数据/自定义策略/默认值,三种策略供选择;

(5):是否唯一,用来判定重复数据;

(6):列名称,对应表中的列名;

(7):列标题,及数据表列是对应的;

(8):是否必须导入,0不必须1必须;

(9):数据类型,数字还是字符,;

(10):最大允许长度,不能大于,数据表中该列的长度;(11):数据生成策略值,导入数据是为空,自定义策略是为策略方法名,或者是默认值;

(12):备注;

(13):最终导入数据是否来源于字典,0不1是;(14):字典数据来源表的名称;

(15):字典类型列的字段名;

(16):该列所属的字典类型值;

(17):字典表最终获取值列的名称,例如:现在需要导入

“编码器类型”,内容是“飞利浦”,“编码器类型”是一个字典,对应的字典表是“”,“飞利浦”是“”列的值,而数据表需要存入的是“”列的值,这时“”就是,而“”

就是,“”是;

(18):参见第17条说明。

(19):该规则是否有效;

三、导入规则类设计

{

成功数目

失败数目

}

{

;

( ){…}

(){…}

}

{

;

;

;

;

;

;

;

;

;

;

(){…}

( ){…} }

{

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

}

四、界面设计

1、规则配置界面

2、导入数据界面

五、导入逻辑

关于操作,设计将采用的组件,版本采用项目中已经包含的版本2.5.1。具体导入逻辑如下:

1、将文件上传到服务器,利用加载文件。

2、根据用户选择的导入规则,从数据库加载对应的对象;

3、根据标题行索引,数据开始行索引,结束行标识,判断该

是否满足对应规则的导入条件,满足则继续,不满足则给

出提示信息。

4、从数据开始行开始,逐行读取文件。

5、处理第一列,根据第一列的标题以及属性,匹配到对应的

对象,如果没有匹配的对象,则抛出异常(未找到及之匹

配的列规则),如果该列已经处理过,也抛出异常(标题

存在重复列),否则继续;

6、读取当前列的内容,如果是空值,判断属性是否为,如果

是,则将属性作为内容直接执行第11条,如果是则继续;

7、判断属性是否为,如果为,则跳过8、9逻辑,直接执行

第10条,如果为,则继续;

8、判断属性、属性、属性以及属性,若其中有任意一个为或

空值,则抛出异常(属于字典,却未指定字典表名称以及相关属性、、),否则继续;

9、查找字典表,查找语句为”[] [] []=[]

[]=’[]’”,若语句不能查询到数据,则抛出异常(找不到对应的字典项),若查询到数据,则取第一条数据的[]值,继续;

10、判断属性是否为,若为,执行第11条,若为,则查找

表[]中[]值为[]的数据是否存在,若不存在则执行第11条,否则继续判断属性是否为,若为则删除数据库中该条数据;

11、判断属性,并判断及该类型是否匹配,若不匹配,则

抛出异常(数据类型不符合条件),如果匹配则继续;12、判断长度是否超过属性值,若超过,则抛出异常(单

元格内容长度太大),否则继续;

13、将作为列的值,加到准备好的语句对应参数位置,等

待执行;

14、处理第二列,从第5条开始执行循环处理,直到列结

束;

15、执行或批量执行准备好的语句,返回执行结果;

16、处理第二行,并判断是否符合的条件,如果是结束行,

相关文档
最新文档