教你如何6秒钟往MySQL插入100万条数据的实现
作者:Bei-Zhen 发布时间:2024-01-19 02:17:35
标签:MySQL,插入,数据
一、思路
往MySQL中插入1000000条数据只花了6秒钟!
关键点:
1.使用PreparedStatement对象
2.rewriteBatchedStatements=true 开启批量插入,插入只执行一次,所有插入比较快。
二、 代码
package test0823.demo1;
import java.sql.*;
/**
* @author : Bei-Zhen
* @date : 2020-08-24 0:43
*/
public class JDBC2 {
//static int count = 0;
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.注册驱动(mysql5之后的驱动jar包可以省略注册驱动的步骤)
//Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象
Connection conn = null;
PreparedStatement pstmt = null;
{
try {
//"&rewriteBatchedStatements=true",一次插入多条数据,只插入一次
conn = DriverManager.getConnection("jdbc:mysql:///test?" + "&rewriteBatchedStatements=true","root","root");
//4.定义sql语句
String sql = "insert into user values(default,?,?)";
//5.获取执行sql的对象PreparedStatement
pstmt = conn.prepareStatement(sql);
//6.不断产生sql
for (int i = 0; i < 1000000; i++) {
pstmt.setString(1,(int)(Math.random()*1000000)+"");
pstmt.setString(2,(int)(Math.random()*1000000)+"");
pstmt.addBatch();
}
//7.往数据库插入一次数据
pstmt.executeBatch();
System.out.println("添加1000000条信息成功!");
} 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();
}
}
}
}
}
}
三、运行结果
添加1000000条信息成功!
耗时:6秒
来源:https://blog.csdn.net/qq_33591873/article/details/108191988


猜你喜欢
- python操作mongodb数据库# !/usr/bin/env python# -*- coding:utf-8 -*-"&q
- 简介:外部连接和自联接inner join(等值连接) 只返回两个表中联结字段相等的行left join(左联接) 返回包括左表中的所有记录
- 一、dict推导式list1 = ['name', 'age', 'gender']list
- 1、 下载MYSQL5.1.48源码,CMAKE,VS2008 2、 安装CMAKE和VS2008,解压MYSQL5.1.48到D:\mys
- 察者模式定义定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖都会收到通知并自动更新。观察者模式提供了一种对象设计,让
- '去掉字符串头尾的连续的回车和空格 function trimVBcrlf(str) tr
- 本文实例讲述了JS数组方法concat()用法。分享给大家供大家参考,具体如下:数组方法concat()concat()可以基于当前数组中的
- 1、单行(大文件处理):my $oneline = <$FL> 或while($line=<H>){ }2、读取全部
- 废话不多说,直接上代码!# coding:utf-8from multiprocessing import Poolimport timed
- 1、Introduction之前写过一篇文章:Mysql主从同步的原理。相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?今天我们就来一次m
- 一般现今ASP木马常通过以下四点来操作服务器,所以我们只要将一下四处设置好就能从一 前使用IIS服务器的站长很多,特别是对于ASP网站来说,
- 先看看那种容易被注入的SQL id = 11001 sql = """
- 测试环境win10python 3.5yield功能简介简单来说,yield 的作用就是把一个函数变成一个 generator,带有 yie
- 一、前言构建命令行程序很酷:命令行可以按照我们的设定完成相应的工作,相比 GUI 界面程序,无需花费大量时间设计 GUI 界面。但要使命令行
- 绪论java默认精度是毫秒级别的,生成的时间戳是13位,而python默认是10位的,精度是秒。那么python是如何生成13位时间戳,以及
- 目录Maxwell简介Maxwell的配置与使用1.下载Maxwell安装包2.配置mysql,打开mysql binlog日志3.启动Ma
- 前言来自 Google 的 Andrew Gerrand 曾经关于 Go 中的参数命名规范进行了分享,slides 为 https://ta
- 我遇到过这种情况 就是在我的data中 会有数据调用data中的其他数据如图 我的alertInfoType需要拿到screeningCon
- 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收
- 目前有三个解决办法,也是亲测有用的:第一个方法:因为之前有通过pycharm的project interpreter里的+号添加过一些库,但