论坛首页 入门技术论坛

怎样提高excel文件内容写入数据库的效率?

浏览 5543 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-05  
我目前的处理方法是首先从客户端上传这个文件到服务器,然后在服务器端解析excel中的内容,最后入库。当大批量数据导入的时候,比如说1万条以上,就会出现内存耗尽的问题,另外我在入库时需要对excel的内容检核,还需要做一些数据库操作,也就是说我向数据库中插一条记录,需要执行两次select,一次insert.请问有什么方法提高效率吗?
   发表时间:2007-01-05  
内存耗尽应该是读取Excel时引起的,而不是JDBC操作。
这是我的经验,你应该先查清楚问题的原因。
0 请登录后投票
   发表时间:2007-01-09  
我是用jxl包来读的,读一个文件时要读它的三个sheet,这三个都是用for循环来做的,按行读,读一条记录,做一些检核然后入库,最后关闭这个工作簿,请问这样存在什么问题?(另外我现在处理的excel文件用poi包读不了,不知道是不是因为数据量大的问题)
0 请登录后投票
   发表时间:2007-01-11  
内存溢出是你缓存的EXCEL表的数据太多的结果。
(假设10000行×20列×20字符=4000000个字符, 就需要近2个G的内存了)。
效率问题应该是你频繁访问数据库的结果。
解决方法:
将EXCEL传到服务器后, 分块读取文件到缓存插入数据库:解决内存溢出问题。
建立一个数据库临时表,将EXCEL表中的数据,批量插入到这个临时表中。
后面的事情就是SQL的事情了, 一次(如果可以)SELECT检查,一次批量插入。
0 请登录后投票
   发表时间:2007-01-13  
引用

内存溢出是你缓存的EXCEL表的数据太多的结果。
(假设10000行×20列×20字符=4000000个字符, 就需要近2个G的内存了)。

这个算法有问题吧,一个字符一个字节算的话,4000000个字符总共需要将近4M,怎么会用2个G呢?!
0 请登录后投票
   发表时间:2007-01-13  
1w条并不算大数据量,只是excel处理工具包的处理能力限制造成的,一次只能处理几万条吧。
这么多数据,更新到数据库肯定是要batchupdate;要做内容检查,可以先把要检查的内容select出来,然后在内存中用程序处理检查。
数据库访问大的原则就是:多次单笔用批量,交互拿到内存中处理,减少数据库访问次数。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics