java读取txt文件,预处理判断并且大批量上传到数据库

此为个人做笔记使用,不多废话,看代码

package com.de.demo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Test {


    public static String txtfileString(File file){
    Test test = new Test();
        StringBuilder result = new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            int i=0;
             List<String> dataList =new ArrayList<String>();//数据信息集合
             
            while((s = br.readLine())!=null){//使用readLine方法,一次读一行
//          
                i++;
                 String[] split = s.split("\\s+");
                    phoneList.add(split[0]);    //添加手机信息
                    String data="";
                    for (int j = 1; j < split.length; j++) {
                        data=data+split[j];
                    }
                    dataList.add(data); //将读取的数据添加数据list。准备预处理
                if (i%1000==0){
                    System.out.println(i);可在此处每一千次进行预处理
                    tets.insert(dataList);
                }
            }
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result.toString();
    }

    public static void main(String[] args){
        File file = new File("/Users/lixuejun/work/IT/work/POC富数/test/tags_random_result.txt");
        txtfileString(file);
    }



    public void insert( List<String> dataList){
        try {
            conn.setAutoCommit(false);
            Long beginTime = System.currentTimeMillis();

            //构造预处理statement
            PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");
            //1万次循环
            for(int i=1;i<= dataList.size;i++){
                pst.setInt(1, i);
                pst.addBatch();
                //每1000次提交一次
                if(i%1000==0){//可以设置不同的大小;如50,100,500,1000等等
                    pst.executeBatch();
                    conn.commit();
                    pst.clearBatch();
                }
            }
            Long endTime = System.currentTimeMillis();
            System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");
            pst.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值