用LIst<对象>接收,然后用mybatis的<list一次性存入这样会不会占用太多内存?
怎么才能分批读取和保存呢
不要一次性读取,分页读
第三页 :
SELECT * FROM TABLE_NAME LIMIT 60 ,80
第几页 : N
每页数 M
mysql SELECT * FROM TABLE_NAME WHERE LIMIT NM ,N(M+1);
ORACLE
select * from
(select t., rownum as rn from tab t)
where rn between 10 NM and N*(M+1)-1
你可以尝试在数据库中写一个存储过程(把表A的数据读取然后插入到表b中去),然后在java中用time事件调用存储过程实现
如果id是有序的,每次取个一定条数出来就会, 分批查 select * from table where id > xxx limit 1000;
如果id是无序的,看是否有其他字段是有序的且能区分唯一,单字段不行用组合字段达到效果也行,对这些字段建索引,
然后同样分批查
如果不是频繁的做这种操作,可以考虑分批次多线程去解决,mybatis 插入时批量提交。
这种大数据量的玩意,mybatis提供了游标Cursor,具体性能没测试过,不过本质上也是分批读取数据
分页读和分批写,