当前位置:网站首页>橙单微服务之批量导入
橙单微服务之批量导入
2022-04-23 05:33:00 【pangluo00】

上面这些代码全部是自动生成的,批量导入
如果你配置了这个表单,支持批量导入,那么代码就会生成,否则不会。

出于性能考虑,这里可以存储在本地,当然也可以存储在minio等oss中

橙单会生成一部分需要忽略的字段,比如创建人,创建时间,更新人,更新时间,逻辑删除等。
这里也给出了注释,如果要忽略其他的字段,也可以直接在这里修改,一行即可。

如果excel中的顺序,不是字段中的顺序,可以在这里适当调整即可。
从这两点可以看出,修改就是非常简单的。二次橙单,刻意没有去考虑生成100%的代码,而是确实预留出一些二次开发的填空。这样就非常容易达成平衡。在代码质量,架构、业务和开发效率方面。非常平衡。
如果过度的追求代码生成占比,代码质量和运行时效率都会大幅度下降的。

这里生成的代码注释,解释的都很清楚,如果要做导入数据的字典翻译,只需给这个set添加字段名即可。非常简单。
比如,excel中存入的是gradeName,如“二年级”,这里就会翻译成为对应的id,比如:2,然后插入到原始业务表中,这个就是批量导入中的字典翻译能力

在实际导入的代码中,橙单没有简简单单的使用 普通的方式,而是采用了这种SAX的回调模式,这样可以在导入数据过多的时候,不仅可以加速导入效率,同时还能节省内存。

这里会对所有导入到内存中的数据,进行关联字段的验证

这里就是批量验证,这些都是橙单为生成的代码,如果有误生成的,可以直接修改,并移除。

这些都是基于常量字典的数据验证

这些都是字典表字典的验证,这些字典表都是物理的数据表,但是数据都在缓存中,因此效率更高。

这些是普通业务表之间的关联id的验证。
因此在橙单中,这三类id验证都是完整支持的。
常量类,缓存的字典数据,和数据表中的字典。
对于性能而言,如果有有10万条批量导入的数据,有4个这样需要验证的字段。
那么验证的次数就是40万次,这个性能开销是巨大的。
橙单通过两种方式优化了,第一就是有的字典是redis缓存,还有就是所有的验证都是批量验证,
比如一次验证1000条,那么对数据库的操作次数,就会降低一千倍
如果有的验证id是基于redis的,那么会折半对数据库的访问次数。

最后一步,就是批量插入了。即便这一步,橙单生成的代码也做了足够的优化,
第二个参数是-1,表缺省全部批量插入了,这个批量是真正的insert list那种批量,不是循环insert那种伪批量。
如果第二个参数不是-1,而是具体的数字。
比如10万条数据,不可能一个insert list全部插入,这个是有数据库语法限制的。而且也不能这样蛮干。
所以我们可以设置每个insert list的数据条数,比如2000,那么10万的数据,就会分为50次插入。并最终一次提交
这样可以有效地规避数据库的语法限制,同时也不会给数据库瞬时带来巨大的压力。
好了,批量导入分享到这里。
版权声明
本文为[pangluo00]所创,转载请带上原文链接,感谢
https://blog.csdn.net/cxz7456/article/details/124346999
边栏推荐
- catkin_ What did package do
- How to set the initial value of El input number to null
- [the background color changes after clicking a line]
- Escape characters \ splicing of data formats
- Arithmetic and logical operations
- Watch depth monitoring mode
- Requirements for SQL server to retrieve SQL and user information
- Getting started with varnish
- QSS, qdateedit, qcalendarwidget custom settings
- Multiple mainstream SQL queries only take the latest one of the data
猜你喜欢

(11) Vscode code formatting configuration

Quick app bottom navigation bar

Create cells through JS (while loop)

open3d材质设置参数分析

QT drawpixmap and DrawImage blur problem

Interview Basics

Fast application fuzzy search

Requirements for SQL server to retrieve SQL and user information

Cross domain CORS relationship~

Cross platform packaging of QT packaging program
随机推荐
Quick app bottom navigation bar
Wbpack configuring production development environment
STL function library
CMake基础教程(39)pkgconfig
The QT debug version runs normally and the release version runs crash
egg中的多进程模型--egg文档搬运工
Deep learning object detection
CORS and proxy (づ  ̄ 3  ̄) in egg ~ the process of stepping on the pit and filling the pit ~ tot~
catkin_package到底干了什么
创建进程内存管理copy_mm - 进程与线程(九)
npm升级后问题,慌得一批
QT displays the specified position and size of the picture
转置卷积(Transposed Convolution)
[untitled] Notepad content writing area
Several examples of pointer transfer, parameter transfer, value transfer, etc
Why can't V-IF and V-for be used together
Executable program execution process
JSON.
可执行程序执行流程
Excel 2016 cannot open the file for the first time. Sometimes it is blank and sometimes it is very slow. You have to open it for the second time