当前位置:   article > 正文

mysql换到mongodb主键问题_记一次从mongodb到mysql的数据迁移

mysql数据表转到mongo后主键id怎么办

需要对mongodb进行分页查询,但是分页查询效率很慢,mongdb中存在主键增长,故取出最大id,定义pageSize,当前传入的id如果加上pageSize小于最大值时,userId+=pageSize,简单代码如下

IntegerpageSize =200;

final LongmaxId =17202814L;

log.info("插入开始时间为{}", LocalDateTime.now());

boolean flag =true;

int pageNo =0;

while (flag) {

try {

if (userId >maxId) {

flag =false;

}

long startTime = System.currentTimeMillis();

//log.info("当前pageNo为{}", pageNo);

//int start = pageNo * pageSize;

Query query =new Query(Criteria.where("_id").gt(userId).lte(userId +pageSize));

userId +=pageSize;

//查出分页用户

List xpUsers =mongoTemplate.find(query, XpUser.class);

long endTime = System.currentTimeMillis();

log.info("从mongodb中查出数据时间{}", (endTime - startTime));

/*if (xpUsers.size() != 0) {*/

if(xpUsers.size()==0){

continue;

}

transferData(xpUsers, pageSize * (pageNo +1));

pageNo++;

startTime = System.currentTimeMillis();

log.info("封装插入mysql数据总时间{}", (startTime - endTime));

if (maxId - userId

//最后一条数据

pageSize = Math.toIntExact(maxId - userId);

if(pageSize <=0){

flag =false;

}

}

}catch (Exception e) {

flag =false;

log.error("插入出错,pageNo为{}", pageNo, e);

}

}

log.info("插入结束时间为{}", LocalDateTime.now());

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/675561
推荐阅读
相关标签
  

闽ICP备14008679号