如何处理读取、提取和保存具有 Angular 客户端和 Django 服务器的超大 csv 或 excel 数据

How to handle reading, extracting & saving extremely large csv or excel data having an Angular client and a Django server

提问人:Philip Mutua 提问时间:5/23/2019 更新时间:5/23/2019 访问量:710

问:

我已经实现了一个后端功能,可以上传 CSV 或 excel 文件,然后服务器(Django API)将读取所有数据并将其保存到数据库中,但我觉得这不是最好的方法,并希望获得建议 关于这个。

我不明白为什么服务器需要读取和验证 CSV 文件,而客户端(Angular 应用程序)可以完成这项工作。客户端可以读取验证文件并将数据发送到服务器。

然后,服务器将执行其余的工作,将数据保存到数据库中。但是我想到了,假设文件包含一百万个条目,这意味着服务器端点将添加一百万个项目。这将导致性能问题。处理这个问题的最佳方法是什么?

python django angular 客户端 服务器端

评论

0赞 Daniel Roseman 5/23/2019
我完全不明白你的断言。客户端无法写入数据库,这是服务器的工作。因此,您需要将数据发送到服务器。
0赞 liqSTAR 5/23/2019
@DanielRoseman我认为这不是他的重点。文件的用例是什么?是否会对参赛作品进行评估或是否会有任何疑问?如果没有,为什么不保存孔文件?
0赞 Daniel Roseman 5/23/2019
我无法想象在前端加载数据,然后将数百万个单独的 POST 发送到后端比将整个文件发送到后端并在那里批量插入数据更有效或更高性能。
0赞 Philip Mutua 5/23/2019
@DanielRoseman 如果我不清楚,我知道对不起,我试图解决的一点是客户端已经处理了 csv 文件并将数据发送到服务器,当然服务器会将数据写入数据库。假设客户处理了一百万个,处理这个问题的最佳方法是什么?
0赞 Philip Mutua 5/23/2019
@DanielRoseman假设我们有一个包含一百万个用户条目的 CSV 文件,列是 firstname、lastname 和 email。服务器需要此数据,以便它可以写入并保存到数据库中。

答:

0赞 Zwepp 5/23/2019 #1

我实现了一个 Angular/Python 应用程序,可以处理大型 Excel 文件,即使有多个工作表,最好的方法是让客户端将文件上传到服务器,然后您的服务器完成其余的工作。

处理可能需要大量时间,因此可能需要将文件保存到临时位置,并将其作为作业异步处理。此作业将读取您的文件,处理每一行并将数据保存到数据库。或者,它还可以将进度和作业状态保存到数据库中,因此,您甚至可以让客户端在给定作业 ID 的情况下跟踪处理进度。