浏览 5543 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-05
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-05
内存耗尽应该是读取Excel时引起的,而不是JDBC操作。
这是我的经验,你应该先查清楚问题的原因。 |
|
返回顶楼 | |
发表时间:2007-01-09
我是用jxl包来读的,读一个文件时要读它的三个sheet,这三个都是用for循环来做的,按行读,读一条记录,做一些检核然后入库,最后关闭这个工作簿,请问这样存在什么问题?(另外我现在处理的excel文件用poi包读不了,不知道是不是因为数据量大的问题)
|
|
返回顶楼 | |
发表时间:2007-01-11
内存溢出是你缓存的EXCEL表的数据太多的结果。
(假设10000行×20列×20字符=4000000个字符, 就需要近2个G的内存了)。 效率问题应该是你频繁访问数据库的结果。 解决方法: 将EXCEL传到服务器后, 分块读取文件到缓存插入数据库:解决内存溢出问题。 建立一个数据库临时表,将EXCEL表中的数据,批量插入到这个临时表中。 后面的事情就是SQL的事情了, 一次(如果可以)SELECT检查,一次批量插入。 |
|
返回顶楼 | |
发表时间:2007-01-13
引用 内存溢出是你缓存的EXCEL表的数据太多的结果。 (假设10000行×20列×20字符=4000000个字符, 就需要近2个G的内存了)。 这个算法有问题吧,一个字符一个字节算的话,4000000个字符总共需要将近4M,怎么会用2个G呢?! |
|
返回顶楼 | |
发表时间:2007-01-13
1w条并不算大数据量,只是excel处理工具包的处理能力限制造成的,一次只能处理几万条吧。
这么多数据,更新到数据库肯定是要batchupdate;要做内容检查,可以先把要检查的内容select出来,然后在内存中用程序处理检查。 数据库访问大的原则就是:多次单笔用批量,交互拿到内存中处理,减少数据库访问次数。 |
|
返回顶楼 | |