Excel通过POI大数据导入数据库通用方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、处理第二行,并判断是否符合的条件,如果是结束行,