基于Thread多线程+随机数(Random)+java版本JDBC手动提交事务+EasyExcel读取excel文件,向数据库生成百万级别模拟数据
- 基于Thread多线程+随机数(Random)+java版本JDBC手动提交事务+EasyExcel读取excel文件,向数据库生成百万级别模拟数据
- MyMyExcelDate
- MyMythread
- excel数据
- 数据库结果
基于Thread多线程+随机数(Random)+java版本JDBC手动提交事务+EasyExcel读取excel文件,向数据库生成百万级别模拟数据
MyMyExcelDate
public class MyMyExcelDate {private String id ;private String name ;private String tel ;private String idcard;private String wechat;private String birth;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getIdcard() {return idcard;}public void setIdcard(String idcard) {this.idcard = idcard;}public String getWechat() {return wechat;}public void setWechat(String wechat) {this.wechat = wechat;}public String getBirth() {return birth;}public void setBirth(String birth) {this.birth = birth;}
}
MyMythread
ioi的大小根据实际调整
import com.alibaba.excel.EasyExcel;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class MyMythread {public static void main(String[] args) throws Exception {myThread f1 = new myThread();f1.start();myThread f2 = new myThread();f2.start();myThread f3 = new myThread();f3.start();myThread f4 = new myThread();f4.start();myThread f5 = new myThread();f5.start();myThread f6 = new myThread();f6.start();myThread f7 = new myThread();f7.start();myThread f8 = new myThread();f8.start();myThread f9 = new myThread();f9.start();myThread f0 = new myThread();f0.start();}static class myThread extends Thread{@Overridepublic void run(){InputStream inputStream = null;try {inputStream = new FileInputStream("C:\\Users\\test\\Desktop\\test.xlsx");} catch (FileNotFoundException e) {throw new RuntimeException(e);}List<MyMyExcelDate> tmpList = EasyExcel.read(inputStream)// 设置与Excel表映射的类.head(MyMyExcelDate.class)// 设置sheet,默认读取第一个.sheet(3)// 设置标题所在行数.headRowNumber(1)// 异步读取.doReadSync();List<String> nameList = new ArrayList<>();List<String> telList = new ArrayList<>();List<String> idcardList = new ArrayList<>();List<String> wechatList = new ArrayList<>();List<String> birthList = new ArrayList<>();for (MyMyExcelDate tmpDate : tmpList) {nameList.add(tmpDate.getName());telList.add(tmpDate.getTel());idcardList.add(tmpDate.getIdcard());wechatList.add(tmpDate.getWechat());birthList.add(tmpDate.getBirth());}// 生成 Random 对象Random random = new Random();int ioi = 1;while (ioi<=1000){System.out.println("批次:"+ioi);ioi++;String url = "jdbc:mysql://127.0.0.1:3306/testDB?characterEncoding=utf-8";String username = "root";String password = "123456";Connection conn = null;PreparedStatement ps = null;Long start = System.currentTimeMillis();System.out.println("start...");try {conn = DriverManager.getConnection(url, username, password);conn.setAutoCommit(false);String sql = "insert into mockdata(name,tel,idcard,wechat,birth) values (?,?,?,?,?)";ps = conn.prepareStatement(sql);// ps.executeUpdate();for (int i = 1; i <= 1000; i++) {int number = random.nextInt(100);int number2 = random.nextInt(100);int number3 = random.nextInt(100);int number4 = random.nextInt(100);int number5 = random.nextInt(100);ps.setString(1, nameList.get(number));ps.setString(2, telList.get(number2));ps.setString(3, idcardList.get(number3));ps.setString(4, wechatList.get(number4));ps.setString(5, birthList.get(number5));ps.addBatch();if (i % 100 == 0) {System.out.println("clear batch "+i);ps.executeBatch();ps.clearBatch();}}ps.executeBatch();conn.commit();} catch (SQLException e) {e.printStackTrace();} finally {try {if (ps != null) {ps.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}System.out.println("end"+ (System.currentTimeMillis()-start));}}}
}