我用到的数据库为,mysql数据库5.7版本的

1.首先自己准备好数据库表

其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下:

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable.

出现上面的错误是因为数据库表的max_allowed_packet这个配置没配置足够大,因为默认的为4M的,后来我调为100M就没报错了

set global max_allowed_packet = 100*1024*1024*

记住,设置好后重新登录数据库才能看的设置后的值show VARIABLES like '%max_allowed_packet%'

JDBC代码如下:

package insert;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Date;

import com.mysql.jdbc.PreparedStatement;

public class InsertTest {

public static void main(String[] args) throws ClassNotFoundException, SQLException {

final String url = "jdbc:mysql://127.0.0.1/teacher";

final String name = "com.mysql.jdbc.Driver";

final String user = "root";

final String password = "123456";

Connection conn = null;

Class.forName(name);//指定连接类型

conn = DriverManager.getConnection(url, user, password);//获取连接

if (conn!=null) {

System.out.println("获取连接成功");

insert(conn);

}else {

System.out.println("获取连接失败");

}

}

public static void insert(Connection conn) {

// 开始时间

Long begin = new Date().getTime();

// sql前缀

String prefix = "INSERT INTO t_teacher (id,t_name,t_password,sex,description,pic_url,school_name,regist_date,remark) VALUES ";

try {

// 保存sql后缀

StringBuffer suffix = new StringBuffer();

// 设置事务为非自动提交

conn.setAutoCommit(false);

// 比起st,pst会更好些

PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");//准备执行语句

// 外层循环,总提交事务次数

for (int i = 1; i <= 100; i++) {

suffix = new StringBuffer();

// 第j次提交步长

for (int j = 1; j <= 100000; j++) {

// 构建SQL后缀

suffix.append("('" + uutil.UUIDUtil.getUUID()+"','"+i*j+"','123456'"+ ",'男'"+",'教师'"+",'www.bbk.com'"+",'XX大学'"+",'"+"2016-08-12 14:43:26"+"','备注'" +"),");

}

// 构建完整SQL

String sql = prefix + suffix.substring(0, suffix.length() - 1);

// 添加执行SQL

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("1000万条数据插入花费时间 : " + (end - begin) / 1000 + " s");

System.out.println("插入完成");

}

}

结果:

哈哈,1000万条数据288秒完成,是不是感觉超级牛逼,我每次插入10万条数据就提交一次事务,如果是一条一条差的话估计要好几个小时,网上有人试过时间浪费在数据库的连接上了,

后来我想测试插入100万条数据时候数据库引擎的差别

首先把代码中最外层的循环i=100改为i=10;

1.数据库引擎为MyISAM时:27s,这个我忘了截图了。因为我后来测试InnoDB的时候我换了一个表来测试,因为我发现改不了数据库表的引擎。。。。所以只能换一个表来测试

1.数据库引擎为InnoDB时:

用了77秒,比MyISAW慢了3倍左右,估计要是1000万条数据的时候更慢吧。。。

力控数据写入mysQL_绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来...相关推荐

  1. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  2. 批量往mysql里面插入1000万条数据_绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来...

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  3. mysql 插入秒_教你88秒插入1000万条数据到mysql数据库表,IG牛逼

    我用到的数据库为,mysql数据库5.7版本的首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com ...

  4. java mysql 快速插入1000w条数据_教你88秒插入1000万条数据到mysql数据库表

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  5. 4分钟插入1000万条数据到mysql数据库表

    准备工作 我用到的数据库为,mysql数据库8.0版本的,使用的InnoDB存储引 创建测试表 CREATE TABLE `product` (`id` int NOT NULL AUTO_INCRE ...

  6. 多线程实现一分钟插入1000万条数据

    首先我们需要建立一个线程类,继承Thread类,并实现run方法 1.获取数据库连接 2.编写插入的sql语句 3.关闭自动提交  conn.setAutoCommit(false); 4.编写for ...

  7. 教你急速快速批量插入1000万条数据到mysql数据库表面试题

    急速快速批量插入1000万条数据到mysql数据库表面试题 教你急速快速批量插入1000万条数据到mysql数据库表&面试题 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好 ...

  8. 插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

  9. mysql 1000万数据读取_插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

最新文章

  1. java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
  2. Oculus为VR视频发明了新时间单位「flick」
  3. 如果我是一线技术主管……
  4. 3 左右_3万左右电动迷你小汽车,3万左右电动迷你小汽车车型推荐
  5. Spark RDD使用详解2--RDD创建方式
  6. Codeforces Round #736 (Div. 2)(B-C)
  7. [2019人工智能实战_廖盈嘉]第1次个人作业
  8. javascript-字典形态对象与数组形态对象
  9. 简单的遗传算法java实例
  10. 2022注册测绘师备考开始 还在不知所措?手把手教你怎么考?
  11. 学习笔记(109):R语言入门基础-text函数
  12. html设置幼圆字体,CSS font-family中文字体设置方法
  13. VVC帧内预测(六)MIP
  14. 工作三四年,如果你也迷茫。
  15. 全国青少年编程等级考试python一级真题2020年9月(含题库答题软件账号)
  16. 数码相机删除照片怎么恢复?
  17. loadrunner12-错误 -26366: 找不到 web_reg_find 的“Text=19728.00”
  18. 地平线发布高性能大算力整车智能计算平台战略;环旭电子越南厂近日正式投产;三安集成滤波器首获平台认证 | 全球TMT...
  19. Mysql加密身份证号
  20. Word首页不设置页码

热门文章

  1. idea 建nodejs 项目_三种方法带你新建SpringBoot项目
  2. web root下放置图片_Apache HTTP存在提权漏洞,威胁共享Web主机安全性
  3. c语言程序.cpp文件,[轉]C语言程序设计基础之文件
  4. 用python实现一个密码生成程序_Python实现密码生成器
  5. mysql count和limit,COUNT与LIMIT在mysql查询
  6. 高职院校计算机基础课程,高职院校计算机基础课程教学探讨的论文
  7. oracle集群服务删除,删除 Support for Oracle RAC
  8. java mqtt丢包_MQTT 3.1协议非严肃反思录
  9. idea 查看jsp是否被引用_IDEA集成Java性能分析神器JProfiler
  10. c语言学习进阶-C语言程序出错处理