我用的是poi框架去解析excel数据,大概有十万条。我想先通过一行一行地读取,然后保存在一个集合里面list。解析完成了,这个list就包含了十万个对象的信息了。然后,再把这个list导入 数据库。
我的困惑是:十万条,一条有二十个字段,一下子保存在集合中,会不会内存不够,或者其他事故呢?如何存在,如何改变上面的思路,减少事故发生。
比如,我可不可以边解析边导入,导入后就删除list的呢?这个过程怎么实现?给个思路。
欢迎选择我的课程,让我们一起见证您的进步~~
可以试试边读边写的办法,就是读取从POI中读取一行,然后就向数据库写入一行并提交。当数据从POI中读取完了,数据库写入也完成了。这个办法缺陷就是万一数据写入失败,程序中止的话,你需要从中止的行重新开始读取并写入,所以可能需要记录下中止的行数,以便失败的时候继续上次的进度,不用重头开始。
@一书生VOID 的方法也可以改进成一次读取几百行或者千行(数字看你内存多少而定),然后写入,那么内存占用少,同时也可以减少数据库操作的次数
可以试试边读边写的办法,就是读取从POI中读取一行,然后就向数据库写入一行并提交。当数据从POI中读取完了,数据库写入也完成了。这个办法缺陷就是万一数据写入失败,程序中止的话,你需要从中止的行重新开始读取并写入,所以可能需要记录下中止的行数,以便失败的时候继续上次的进度,不用重头开始。
@一书生VOID 的方法也可以改进成一次读取几百行或者千行(数字看你内存多少而定),然后写入,那么内存占用少,同时也可以减少数据库操作的次数