zoukankan      html  css  js  c++  java
  • 解析超大数据的json文件,存入数据库

    需求:导出json文件,解析数据存入数据库

    json格式[{k:v,k:v},{..},{..}]

    json文件是json数组中包含json对象,json对象是表的字段名和值

    json数据大约有200w条,如果直接用流的方式读成对象,不太可能数据太大了

    解决方法:用alilibaba.fastjson

    阿里的json可以实现一边读一边存的,这样就可以控制一次存储的数量

    pubic void sive(){
      File file=new File(path);//json文件路径
      List<reportData> reportData=new ....//实体对象的list集合
      JSONReader reader=new JSONReader(new FileReader(file));
      int count=0;
      read.starArray();//开始读json数组
      while(readser.hasNext()){
        read.startObject();//开始取json对象
        JSONObject json=new JSONObject();
        while(reader.hasNext()){
          string key=reader.readString();//json的key
          string value=reader.readObject().toString();//json的value
          json.put(key,value);
        }
        reportData data=JSON.parseObject(json.toString(),reportData.class)//jso格式转换对象
        reportData.add(data);
        count++;
        if(count%5000==0){//每5000条数据插入一次数据库,数据库操作用的mybatis的循环insert
          mapper.save(reportData);
          reportData.clear();//清空list
        }
        reader.endObject();
      }
      reader.endArray();  
      reader.close();
      if(reportData.size()>0){//如果读完之后,size>0,说明list还有数据,数据不足5000
        mapper.save(erportData)
      }
    }
  • 相关阅读:
    荣誉追记
    通过代码实现 Windows Mobile 窗体的最小化 (转)
    软件协会周年庆(高清晰)
    菜鸟级注册与限制
    Ajax Tree (转)
    转职场别做愤青
    菜鸟级分页用户控件
    Windows Mobile 常用键值(VK)对应表及系统文件夹简单介绍
    12.Linux软件包管理相关操作
    5.Docker应用
  • 原文地址:https://www.cnblogs.com/xiandong/p/9935240.html
Copyright © 2011-2022 走看看