-2

我有一个 Web 应用程序,我需要从 Excel 格式的文件中输入大量数据——比如 10,000 行和 200 列。然后我需要处理这些数据,然后从数据库中插入/更新/删除。

我已经尝试通过将所有内容都放在 java 代码应用程序中来做到这一点,但结果太慢了。

有人可以提出更好的方法吗?注意我没有将这些数据放入某些类或对象中。我只是在处理和更新数据库。

4

2 回答 2

2

我建议你使用流技术。使用 Apache Commons FileUpload: http ://commons.apache.org/fileupload/streaming.html

然后一一处理记录,这样你就不会分配内存。需要考虑的事项:如果您的流程在中间中断,会发生什么?如果这对您很重要,请使用事务。不幸的是,我无法为您提供阅读 XLS 格式的提示,但如果您可以使用 CSV,事情会变得更简单 - 用于此的库很少。

您可以微调 FileUpload 以将数据存储在内存、磁盘或组合中。或者您可以相信它会做正确的事情。

于 2012-04-09T17:19:09.463 回答
0

目前还不清楚您的应用程序中发生了什么:您是在与用户输入(上传)交互还是只是在初始化应用程序?如果是后者,数据更新当然可以在安装应用程序时完成一次,而不是在请求阶段。如果是前者,则取决于很多因素:如何读取数据?文件 IO 可能很慢;你如何更新数据库?- 使用存储过程?或者只是简单的 JDBC SQL 子句。如果整个过程似乎太慢而无法完成,那么某种后台线程可能会更好。

于 2012-04-09T18:08:45.187 回答