关于处理导入 excel 的数据一个问题

2023-01-10 17:11:10 +08:00
 zvvvvv

想知道大家平时都是怎么处理导入的 excel 数据的。 目前我知道的有两种方法: 1 、批量的进行读、校验、保存 2 、每行数据进行单独处理 因为目前在改公司的一个老项目时,发现他需要对 excel 某个字段的唯一性进行校验。此时是批量处理的话,由于在处理导入数据前期有对校验所需用的数据进行一次缓存,那么在处理导入数据的过程中,如果在客户端手动的添加了一条与 excel 冲突的数据,并不会影响 excel 中数据的保存(按理来说冲突的那条数据应该无法被保存)。然后如果时单独处理的话,那么会造成大量的数据库连接。

1004 次点击
所在节点    程序员
9 条回复
zvvvvv
2023-01-10 17:12:53 +08:00
我翻了一些国外的开源项目,发现他们对导入的数据都是逐行进行处理的,这样真的好吗
qingwnag
2023-01-10 17:32:26 +08:00
逐行处理,可能是因为需要做数据校验,校验失败后是直接失败返回还是校验完一把返回未通过数据。
litchinn
2023-01-10 17:54:14 +08:00
可以试试导入时把要导入的数据缓存起来,手动新增的时候查一下,但是如果真是 0 容忍的话还得加锁或者数据库设置唯一约束
zvvvvv
2023-01-11 09:31:54 +08:00
@qingwnag 现有项目就是逐行处理的,但是导入时进行了大量的关联数据缓存。看来还是只能通过加版本进行区分了
zvvvvv
2023-01-11 09:32:23 +08:00
@litchinn 目前看来是只能这样了,唯一的缺点是插入的时候效率会降低
RedBeanIce
2023-01-13 13:51:05 +08:00
1 ,请注意一个异常情况,,,如果导入的 excel 行数过多,会导致 web 服务 OOM 内存溢出。
2 ,导入本身应该被认为或者设计成是一个耗时操作,,所以效率请不要考虑太多。(可以提醒用户处理了多少行)
zvvvvv
2023-01-13 13:59:20 +08:00
@RedBeanIce 好的 因为总是在想能不能有什么骚操作可以提升下效率,主要还是功能在设计之处就设计的有问题,各种数据耦合在一起了..
RedBeanIce
2023-01-13 14:10:09 +08:00
@zvvvvv
假如一个 excel 文件一万行,,读取的时候,最好可以一千行(可配置)读取一次,处理一次。。
否则一次性把一万行全部加载,web 服务基本上就 OOM 了,,,

一千行一次读取,基本上已经提升很多效率了。。
zvvvvv
2023-01-13 14:35:10 +08:00
@RedBeanIce 目前已经限定行数读取了,因此 OOM 暂时可以不考虑。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907969

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX