2025年8.java读取txt文档(十万行)插入到数据库-bach+simple方式

8.java读取txt文档(十万行)插入到数据库-bach+simple方式本篇效率最高 在插入十万行左右数据到数据库时 推荐细看 详细思路请看 springboot 读取本地大文档 1G 目录导航 8 插入千万行以上最高效参考 分为三层 1 controller 层 ApiOperation insert 接口 Bach amp Simble 添加数据

大家好,我是讯享网,很高兴认识大家。

本篇效率最高!!!-在插入十万行左右数据到数据库时。推荐细看。
详细思路请看springboot读取本地大文档1G目录导航-8

插入千万行以上最高效参考
在这里插入图片描述
讯享网
在这里插入图片描述
分为三层
1.controller层

@ApiOperation("insert接口-Bach&Simble添加数据") @RequestMapping(value = "insertTableSimble", method = RequestMethod.POST) @ResponseBody public void insertTableSimbleController(){ 
    tsi.insertTableBachSimbleService(); } 

讯享网
讯享网 void insertTableBachSimbleService(); 

实现类

/*2.bach simble*/ @Override public void insertTableBachSimbleService() { 
    /*1.手动提交 所以是false*/ SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession( ExecutorType.BATCH, false); /*2.获取mybatis对象*/ tm = session.getMapper(TableMapper.class); try { 
    /*3.获取文件*/ File file = new File("C:/Users/admin/Desktop/cities500.txt"); /*4.将文件存入集合 工具类 ReadTxt.txt2String(file)*/ List<Geoname> al = ReadTxt.txt2String(file); /*5.每次1000条 共 size次*/ int size = al.size()/1000; for (int i = 1; i <= size+1; i++) { 
    long time1 = System.currentTimeMillis(); /*6.遍历每条插入到数据库 例如 i 3 插入3000 到4000条 */ for(int k = (i-1)*1000;k<i*1000&&k<al.size();k++){ 
    tm.insertTableSimble(al.get(k)); } //手动每1000个一提交,提交后无法回滚 session.commit(); //清理缓存,防止溢出 session.clearCache(); long time2 = System.currentTimeMillis(); System.out.println("第"+i+"次耗时:"+(time2-time1)); } } catch (Exception e) { 
    //没有提交的数据可以回滚 session.rollback(); } finally { 
    session.close(); } } 

工具类

讯享网 / * 1.一次性读取txt文件的内容 将文件内容存入集合 * @param file 想要读取的文件对象 * @return 返回文件内容 */ public static ArrayList<Geoname> txt2String(File file){ 
    ArrayList<Geoname> al = new ArrayList<>(); try{ 
    BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件 String s = null; while((s = br.readLine())!=null){ 
   //使用readLine方法,一次读一行 String[] sz = s.split("\t"); Geoname g = new Geoname(sz[0],sz[1],sz[2],sz[3],sz[4],sz[5],sz[6],sz[7],sz[8],sz[9],sz[10],sz[11],sz[12],sz[13],sz[14],sz[15],sz[16],sz[17],sz[18]); al.add(g); } br.close(); }catch(Exception e){ 
    e.printStackTrace(); } return al; } 
void insertTableSimble(Geoname g); 

实现类

讯享网<!--/*4.添加信息*/--> <insert id="insertTableSimble" parameterType="com.example.springboot6.bean.Geoname" > insert into allCountries (geonameid,name,asciiname,alternatenames,latitude,longitude,feature_class,feature_code,country_code,cc2,admin1_code,admin2_code,admin3_code,admin4_code,population,elevation,dem,timezone,modification_date) values (#{ 
   geonameid,jdbcType=INTEGER},#{ 
   name,jdbcType=VARCHAR},#{ 
   asciiname,jdbcType=VARCHAR},#{ 
   alternatenames,jdbcType=VARCHAR},#{ 
   latitude,jdbcType=DOUBLE},#{ 
   longitude,jdbcType=DOUBLE},#{ 
   featureClass,jdbcType=CHAR},#{ 
   featureCode,jdbcType=VARCHAR},#{ 
   countryCode,jdbcType=VARCHAR},#{ 
   cc2,jdbcType=VARCHAR},#{ 
   admin1Code,jdbcType=VARCHAR},#{ 
   admin2Code,jdbcType=VARCHAR},#{ 
   admin3Code,jdbcType=VARCHAR},#{ 
   admin4Code,jdbcType=VARCHAR},#{ 
   population,jdbcType=BIGINT},#{ 
   elevation,jdbcType=INTEGER},#{ 
   dem,jdbcType=INTEGER},#{ 
   timezone,jdbcType=VARCHAR},#{ 
   modificationDate,jdbcType=DATE}) </insert> 

完毕!

小讯
上一篇 2025-01-15 14:41
下一篇 2025-04-03 10:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/119047.html