请教一个java 操作excel大数据量的问题



我现在有一个这样的需求:用户传很多excel文件上来,每个excel文件大概有6w条记录的数据,多的有18万条记录,当然他可能在一个excel表里,也可能在多个excel表里。在这个excel工作簿里有一个关联编码是和数据库某字段,一一对应的,不能多,也不能少。数据库数据有100w条记录,我现在要比对用户上传的excel工作簿里的关联编码是否和数据库的一致且excel工作簿里的关联编码不能重复。向大家请教个好的解决方案!!!谢谢!!!
  先说明,这个是一个web开发,项目经理要求是,设计一个按钮,用户点击这个按钮后,所有的过程让java自动完成。


而且,我的这个项目要求兼容2003与2007,请不要说用poi把整个excel加载进内存的方法,我试过了,一加载进来就oom了,测试的excel 还只有4万条数据量。
问题补充
首先谢谢大家的回复,我先试试大家的各种方法。也欢迎大家做进一步的指导。
问题补充
我好像有一点没说清楚,就是我的这个项目,是用java开发的。
问题补充
非常感谢大家的帮助,因为前段时间忙,没来论坛。谢谢大家!!!
问题补充
非常感谢大家的帮助,前段时间因为忙,所以没顾上,上论坛,谢谢大家的帮助。

iteye_3789
iteye_3789 DbTools工具下载: http://cuishuangjia.iteye.com/admin/blogs/1867417DbTools工具视频: http://cuishuangjia.iteye.com/admin/blogs/1832537支持ORACLE,MYSQL,SQLSERVER,POSTGRE四种数据库相互转换功能 功能: 1。将数据库中的表结构和数据保存到EXCEL中。 2。将EXCEL中的数据,同步到数据库中。 3。当表结构发生变化时,数据不会丢失。 4。根据EXCEL中的表结构,生成建表语句SQL文。 5。多用户使用该软件时,可以随时记录某个用户对数据库的操作。 6。可以为进行压力测试,自动生成数据。 7。导出表结构,根据表结构和数据库中的表结构进行差分。 8。导出DB结构,和现有环境DB进行表结构差分 9。导出用户自定义表结构,根据表结构导入,导入数据前对EXCEL校验进行数据库验证和业务逻辑验证
6 年多之前 回复

24个回答

http://gaosheng08.iteye.com/blog/624758
这是本人用poi的eventmodel写的大数据量的excel的读取程序。
也许对楼主用帮助。

先问问,这样的excel文件用Excel能打开不

看biff8,然后自己写。

用.NET做个程序,用OleDB读取Excel,然后将Excel内容导入到数据库里面,然后再用SQL处理。

需要实时的吗? 我觉得这种大数据量做实时的有点困难。能否允许客户上传文件,背后你可以用ssis 存到数据库,然后再处理。
如果需要实时处理的话,你可能需要用POI把数据存到一个临时表里,然后再和数据库进行sql比对。

:D 让用户把excel另存为csv文件上传做文本处理不行么,能用到6w条数据excel的用户绝对不会是电脑白痴。
业务上一个简单的手工操作能解决的问题,就不要上升到程序高度。

如果你是直接采用开启EXCEL进程的方式打开EXCEL,那么,这样会很慢,数据量特别大的时候,甚至会造成内存溢出.更别提后面的读取数据了.
我曾经做过这样的项目,可惜不是用的JAVA.很难给你JAVA的解决方案.但我可以说哈我们的流程,希望对你有所帮助.
1.采用反射程序集的方式,调用EXCEL,将其保存成HTML格式.
2.解析HTML格式中的数据,这里请注意,EXCEL保存为HTML后,内容还算是比较标准的,那些个行,单元格,都和

,,
有对应.最后,使用正则表达式来提取数据.
基本流程就是这些了.但实现过程,确实要复杂很多.因为客户的EXCEL文件可能会多种多样.
说句实话,MD某些客户的程序我就搞不懂了,既然能生成简单数据表格的纯数据,难道就不会生成XML格式的文件吗? 如果是XML一切都简单了,即使是文本文件也要简单很多,比如生成一些标准的文本文件,像EDI那样.所以,碰到这种数据交互方式,真的很头大.

如果用poi的话。那就判断一下有多少行的数据。如果很多的话就用poi把一个大的sheet页分成多个sheet页。就行了。

建议LZ研究下Oracle的sql loader

我们项目也有这问题, 不过是数据导出在10W以上Excel, 数据库是ORACLE RAC + 磁盘阵列, 所以瓶颈在Web Server。 就算做了load balanced也会把Web Server 其中一个秒掉。

共24条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!