资源描述:
《pio导入大量数据时的解决内存溢出问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、本人刚进公司,目前还处于干杂活状态。现在的任务就是把客户数据迁移到数据库中,由于客户提供的数据都存储在excel中,有些文件数据量还很大,在usermodel模式下经常内存溢出,于是只能采用直接通过pl/sql往数据库复制或是用eventusermodel模式读取。直接复制倒是简单,但是速度太慢,一次复制的太多也会内存溢出,我没那耐心,没办法,只能用第二种办法了。在google上找,发现相关示例太少了,幸好在docjar找到了一个示例,自己又改了一下,把原来的例子改为抽象类,提供了一个optRow
2、s()方法来对行级数据进行操作。usermodel模式对excel操作前需要将文件全部转入内存,对较大文件来说内存开销很大。但是其使用简单。eventusermodel模式采用事件模型,对文件边读取边处理,内存消耗较低,效率高,因为不用等待文件全部装入内存。但使用较复杂。excel读取采用的API为P0I3.6,使用前先下载此包,若运行中出现其他依赖包不存在,请下载相应依赖包。下面展示的是excel2003及其之前版本的大文件读取方法。抽象类HxlsAbstract:Java代码1.package
3、com.gaosheng.util,xls;2.import3.import4.import5.import6.import7.import8.import9.java.io.FilelnputStream;java.io.FileNotFoundException;java.io.TOException;java.io.PrintStrcam;java.sql.SQLException;java.util.ArrayList;java.util.List;10.importorg.apache,
4、poi.hssf.eventuscnnodcLFormatTrackingHSSFListener;11.importorg.apache,poi.hssf.eventusermodel.HSSFEventFactory;10.importorg.apache,poi.hssf.eventusermodel.HSSFListener;importorg.apache,poi.hssf.eventusermodel.HSSFRequest;importorg.apache,poi.hssf.even
5、tusermodel.MissingRecordAwareHSSFListener;importorg.apache,poi.hssf.eventusermodel.EventWorkbookBuiIder•ShectRccordCollcctingListcncr;importorg.apache,poi.OfRowDummyRecord;importorg.apache,poi.elIDummyRecord;importimportimportimportimportimportimporti
6、mportimportimportimportimportimportimportimportimportorg.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org.apache,poi.org
7、.apache,poi.org.apache,poi.hssf.eventusermodel,dummyrecord.LastCellhssf.eventusermodel.dummyrecord.MissingChssf.model.IlSSFFormulaParscr;hssf.record.BOFRecord;hssf.record.BlankRecord;hssf.record.BoolErrRecord;hssf.record.BoundSheetRecord;hssf.record.F
8、ormulaRccord;hssf.record.LabelRecord;hssf.record.LabelSSTRecord;hssf.record.NoteRecord;hssf.record.NumberRecord;hssf.record.RKRccord;hssf.record.Record;hssf.record.SSTRecord;hssf.record.StringRecord;hssf.usermodel.HSSFWorkbook;org.apache,poi.p