概述
方法一:使用java程序生成,一次insert。
注:user表的id为自动增长,所以insert可以不带id
public class MyThread extends Thread {
public void run() {
String url = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8";
String name = "com.mysql.jdbc.Driver";
String user = "root";
String password = "111";
Connection conn = null;
try {
Class.forName(name);
conn = DriverManager.getConnection(url, user, password);// 获取连接
conn.setAutoCommit(false);// 关闭自动提交,不然conn.commit()运行到这句会报错
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Long begin = new Date().getTime();
String prefix = "INSERT INTO user(name,age,sex) VALUES ";
try {
// 保存sql后缀
StringBuffer suffix = new StringBuffer();
// 设置事务为非自动提交
conn.setAutoCommit(false);
// 比起st,pst会更好些
PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");// 准备执行语句
// 外层循环,总提交事务次数
for (int i = 1; i <= 1; i++) {
suffix = new StringBuffer();
// 第j次提交步长
for (int j = 1; j <= 2; j++) {
String names = "用户" + i + j ;
suffix.append("('" + names + "'" + ",'" + j + "'" + ",'男'),");
}
String sql = prefix + suffix.substring(0, suffix.length() - 1);
pst.addBatch(sql);
pst.executeBatch();
// 提交事务
conn.commit();
suffix = new StringBuffer();
}
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
Long end = new Date().getTime();
System.out.println("100万条数据插入花费时间 : " + (end - begin) / 1000 + " s" + " 插入完成");
}
public static void main(String[] args) {
new MyThread().start();
}
}
方法二: 使用存储过程
BEGIN
declare i BIGINT default 0;
while i<number DO
insert into user(id, name, age, sex) values(i,'333333',25,'男');
set i=i+1;
end while;
END
最后调用此存储过程:
call insertFc(number)
(insertFc是此存储过程的名字,number为具体的数字,
例如要插入100 0000 条数据就是call insertFc(1000000))
最后
以上就是老实乌龟为你收集整理的MYSQL创建百万级测试数据表方法的全部内容,希望文章能够帮你解决MYSQL创建百万级测试数据表方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复