提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
navicate 插入数据100000条
前言
工作需要 sql 优化 需要插入200万数据;自己学习了网上的插入方法 ,并进行了相对应的优化调节。
一.数据库字段类型
CREATE table testtwo(
id int PRIMARY key auto_increment,
idnumber bigint(20),
name varchar(255),
age int(11),
create_time datetime
);
二、代码如下
package Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Random;
public class Testthree {
public static void main(String[] args) {
long start = System.currentTimeMillis();
conn();
long end = System.currentTimeMillis();
System.out.println(“耗时:” + (end - start)/1000 + “秒”);
}
public static void conn(){
//1.导入驱动jar包
//2.注册驱动
//Class.forName(“com.mysql.jdbc.Driver”);
//3.获取数据库连接对象
Connection conn = null;
PreparedStatement pstmt = null;
{
try {
conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,“root”,“root”);
//4.定义sql语句
String sql = “insert into testtwo(idnumber,name,age,create_time) values(?,?,?,?)”;
//5.获取执行sql的对象PreparedStatement
pstmt = conn.prepareStatement(sql);
//6.不断产生sql
Random random = new Random();
int length=100;
List numberList = new ArrayList<>();
for(int i=0;i<length;i++){
numberList.add(100000L+i);
}
//年龄生成1~15岁之间
int age=15;
List ageList=new ArrayList<>();
for(int i=0;i<age;i++){
ageList.add(i);
}
int a=1;
//循环对数据库进行插入
for (int i = 0; i < 100000; i++) {
a+=1;
//随机生成6位数的编号 并且会重复进行插入
pstmt.setLong(1, numberList.get(random.nextInt(length)));// id 编号 bigint类型
pstmt.setString(2,“HelloWorld”+a);//名字 varchar
pstmt.setInt(3,ageList.get(random.nextInt(age)));//年龄 int
pstmt.setTimestamp(4,new Timestamp(Calendar.getInstance().getTimeInMillis())); //创建时间 datetime
pstmt.addBatch();
}
//7.往数据库插入一次数据
pstmt.executeBatch();
System.out.println(“添加100000条信息成功!”);
} catch (SQLException e) {
e.printStackTrace();
} finally {
//8.释放资源
//避免空指针异常
if(pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
三.结果
在这里插入
总结
提示:这里对文章进行总结:
例如:以上这些内容是为了记录