3分钟如何向MySQL数据库中插入100万条数据

发表于:2013-8-30 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhangjinpeng66    来源:51Testing软件测试网采编

  一、编写测试案例向MySQL数据库中插入百万条数据。测试数据表建表脚本如下:use db_xk;

drop table if exists tb_test2;
create table tb_test2 (
id int primary key auto_increment,
subject varchar(50) not null,
description varchar(200) not null,
teacher_id int(10) zerofill not null,
student_id int(10) zerofill default null,
state boolean not null default false
);state boolean not null default false
);

  测试案例源码如下:

package test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import util.DBUtil;
public class TestDataBase2 {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
String sql = "insert into tb_test2(subject, description, teacher_id, student_id) values (?,?,?,?)";
try {
PreparedStatement prep = conn.prepareStatement(sql);
// 将连接的自动提交关闭,数据在传送到数据库的过程中相当耗时
conn.setAutoCommit(false);
long start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
long start2 = System.currentTimeMillis();
// 一次性执行插入10万条数据
for (int j = 0; j < 100000; j++) {
prep.setString(1, "test2");
prep.setString(2, "test3");
prep.setInt(3, 1234562);
prep.setInt(4, 12354545);
// 将预处理添加到批中
prep.addBatch();
}
// 预处理批量执行
prep.executeBatch();
prep.clearBatch();
conn.commit();
long end2 = System.currentTimeMillis();
// 批量执行一次批量打印执行依次的时间
System.out.print("inner"+i+": ");
System.out.println(end2 - start2);
}
long end = System.currentTimeMillis();
System.out.print("total: ");
System.out.println(end - start);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn);
}
}
}

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • liysky
    2013-9-01 21:52:43

    想表达什么?方法?比这好的多的是

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号