小弟现在遇到一个问题,我从数据库查询出的数据有100w左右,一次性查询报内存溢出。参考其他资料说要分段
取出后再写到Excel中,我的需求是点击按钮后分段取出数据不用在页面显示,直接生成一个Excel文件,可以分多个sheet保存,现在就是不知道这个分段取数据的代码如何写,拜托各位大侠能够给提供一个完整的源码实例,不胜感激啊!非常着急,望有相关代码的达人们不吝赐教!
12 个解决方案
#1
#2
分段是这样的意思,你先查询出总记录数,例如是110W,然后分段根据这个数值分段1-1000,1001-xxx,类推,就像分页一样,查询出来就插入到excel里,后面查询出来就继续添加到之前那些数据后面,然后就没问题了,具体的分段数量根据你根据具体情况来吧
#3
#4
直接用jdbc
再 循环 resultset 的时候不要封装数据,直接把数据写文件里。
再 循环 resultset 的时候不要封装数据,直接把数据写文件里。
#5
意思我明白了,就是sql语句及jsp代码这该怎么写我不清楚,本人菜鸟,能给我提供个源代码供参考吗?在这跪谢各位达人了。
#6
for (int i = 0, leni = str.length; i < leni; i++) 用循环,分配每次取出多少条记录存放一个表单中
#7
真不好意思,这个看不太懂,能有完整点的代码吗?
#8
这个比较简单,在方法里做两个变量start、size、每次重start位置看是,到start+size位置结束,然后把start赋值为start+size,下次再从start看是。。。。。
#9
超级缓存
#10
直接用sql取分段的记录,数据库不同,写法有所区别。。。
#11
内存放的大大的,估计能一次全查询,而且不内存溢出!
#12
#1
#2
分段是这样的意思,你先查询出总记录数,例如是110W,然后分段根据这个数值分段1-1000,1001-xxx,类推,就像分页一样,查询出来就插入到excel里,后面查询出来就继续添加到之前那些数据后面,然后就没问题了,具体的分段数量根据你根据具体情况来吧
#3
#4
直接用jdbc
再 循环 resultset 的时候不要封装数据,直接把数据写文件里。
再 循环 resultset 的时候不要封装数据,直接把数据写文件里。
#5
意思我明白了,就是sql语句及jsp代码这该怎么写我不清楚,本人菜鸟,能给我提供个源代码供参考吗?在这跪谢各位达人了。
#6
for (int i = 0, leni = str.length; i < leni; i++) 用循环,分配每次取出多少条记录存放一个表单中
#7
真不好意思,这个看不太懂,能有完整点的代码吗?
#8
这个比较简单,在方法里做两个变量start、size、每次重start位置看是,到start+size位置结束,然后把start赋值为start+size,下次再从start看是。。。。。
#9
超级缓存
#10
直接用sql取分段的记录,数据库不同,写法有所区别。。。
#11
内存放的大大的,估计能一次全查询,而且不内存溢出!