想知道大家平时都是怎么处理导入的 excel 数据的。 目前我知道的有两种方法: 1 、批量的进行读、校验、保存 2 、每行数据进行单独处理 因为目前在改公司的一个老项目时,发现他需要对 excel 某个字段的唯一性进行校验。此时是批量处理的话,由于在处理导入数据前期有对校验所需用的数据进行一次缓存,那么在处理导入数据的过程中,如果在客户端手动的添加了一条与 excel 冲突的数据,并不会影响 excel 中数据的保存(按理来说冲突的那条数据应该无法被保存)。然后如果时单独处理的话,那么会造成大量的数据库连接。
1
zvvvvv OP 我翻了一些国外的开源项目,发现他们对导入的数据都是逐行进行处理的,这样真的好吗
|
2
qingwnag 2023-01-10 17:32:26 +08:00
逐行处理,可能是因为需要做数据校验,校验失败后是直接失败返回还是校验完一把返回未通过数据。
|
3
litchinn 2023-01-10 17:54:14 +08:00
可以试试导入时把要导入的数据缓存起来,手动新增的时候查一下,但是如果真是 0 容忍的话还得加锁或者数据库设置唯一约束
|
6
RedBeanIce 2023-01-13 13:51:05 +08:00
1 ,请注意一个异常情况,,,如果导入的 excel 行数过多,会导致 web 服务 OOM 内存溢出。
2 ,导入本身应该被认为或者设计成是一个耗时操作,,所以效率请不要考虑太多。(可以提醒用户处理了多少行) |
7
zvvvvv OP @RedBeanIce 好的 因为总是在想能不能有什么骚操作可以提升下效率,主要还是功能在设计之处就设计的有问题,各种数据耦合在一起了..
|
8
RedBeanIce 2023-01-13 14:10:09 +08:00
@zvvvvv
假如一个 excel 文件一万行,,读取的时候,最好可以一千行(可配置)读取一次,处理一次。。 否则一次性把一万行全部加载,web 服务基本上就 OOM 了,,, 一千行一次读取,基本上已经提升很多效率了。。 |
9
zvvvvv OP @RedBeanIce 目前已经限定行数读取了,因此 OOM 暂时可以不考虑。
|