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

 一、编写测试案例向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);
}
}
}

   

最新内容请见作者的GitHub页:http://qaseven.github.io/

   

时间: 2024-11-03 22:28:23

3分钟如何向MySQL数据库中插入100万条数据的相关文章

sql server 2000中循环插入100万条数据

server|插入|数据|循环 出处:∮明天去要饭's Blog         前段时间在测试100万条以上数据时的分页速度,需要往数据库中插入100万条记录,那个时候插入记录我是用C#写的,后来发现,其实用SQL自已也可以实现的,而且更简单哦!以下是我写的一个实例,很简单,大家应该能看懂的.         declare @i int  --变义变量@i        set @i = 1 --初始化@i为1        while @i < 100 --如果@i小于100,这里改成10

怎样快速的向SQL-2000里插入10万条数据啊?

问题描述 本人刚参加了一个公司的笔试,有这样一道题,想到了一个笨方法,但速度比较慢,有没有比较快速的方法,向数据库里插入10万条数据?谢谢了... 解决方案 解决方案二:BULKINSERT解决方案三:能不能说的清楚点,还是不明白.解决方案四:在SQL联机帮助里找找看,网上搜索下也行的.解决方案五:有点难度哦

怎么向mysql数据库中插入时间,且怎么求某两个时间段中的所有记录

问题描述 怎么向mysql数据库中插入时间,且怎么求某两个时间段中的所有记录 解决方案 解决方案二:SimpleDateFormat函数between字段and字段就行了解决方案三:把时间转成String型的给他赋值,取一段时间用sql="...timebetween'"+time1+"'and'"+time2+"'";注意拼接的字符串的单引号

oracle数据库中怎么一次性插入10万条数据

问题描述 oracle数据库中怎么一次性插入10万条数据 oracle数据库中怎么一次性插入10万条数据?急用!!!1 解决方案 最快的方法是用imp进行导入 或者用sql执行也可以(insert into )

从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

原文:从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO CREATE TABLE RANDTEST(ID INT DEFAULT RAND()*100,NAME NVARCHAR(200) DEFAULT 'nihao') GO CREATE INDEX IX_RANDTEST_ID ON RANDTEST(ID)

mysql 插入10万条数据 优化效率

问题描述 mysql 插入10万条数据 优化效率 public int addTypes(List<taobaoBean> babyList) { String sql = "insert into type (typeid,url) values (?,?) "; Connection conn = dbhelper.getConnection(driver,url,username,upwd); int result = 0; PreparedStatement stm

极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)     实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间.     本实验中所用到工具为VS2008和SQL SERVER 2000.SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器.感兴趣的朋友可以下载源代码自己

平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案

问题描述 平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案 5C 目前由于平台要处理2万设备,每秒能处理2万条数据,之前使用ActiveMQ,不能达到需求了,之前测试rabbitMQ,Redis 之类,在测试机子上面都不能达到需求,本地测试 模拟1000个线程并发处理,一个线程处理1000插入数据,始终未能达到!不知道大家有没什么好的解决方案能达到这种需求的? 解决方案 单机很难达到这样的吞吐量,需要使用负载平衡了. 解决方案二: 同多台机器分布式处理吧. 解决方案三: hadoop等

Oracle查询一个表中的几万条数据,不用or,优化的方法还有什么呢

问题描述 Oracle查询一个表中的几万条数据,不用or,优化的方法还有什么呢 如:name numbers a 22 b 33 c 44 d 55 . . . 查询a.b.d的详细信息,不用or in之类的 解决方案 用 EXISTS ........