教你如何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
0
投稿
猜你喜欢
- 目录一、使用JDBC连接数据库1.使用JDBC-ODBC桥驱动程序连接数据库2.下面进行代码演示3.注意点二、源码:一、使用JDBC连接数据
- Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,fil
- 用于逐行分析文本的代码示例fileIN = open(sys.argv[1], "r")line = fileIN.re
- 1 旖旎风景马上虎年了,也是我的生肖年,很激动!(不小心暴露了年龄,哈哈哈......),这里先给大家拜年啦,祝大家虎年快乐,虎年爆富!&n
- 在前面的DRF系列教程中,我们以博客为例介绍了序列化器, 使用基于类的视图APIView和ModelViewSet开发了针对文章资源进行增删
- 前言基于 Internet的各种服务系统应运而生,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息;论坛作为 Inter
- Windows 10 x64macOS Sierra 10.12.4Python 2.7准备好装哔~了么,来吧,做个真正意义上的绿色小软件W
- 铃铃铃…… 上课了老师在黑板写着这么一个标题 《Python: 你所不知道的星号 * 用法》同学A: 呃,星号不就
- 当服务器必须提供与两个或更多个网络或网络子网的连接时,典型的方案是使用多宿主计算机。此计算机通常位于外围网络(也称为 DMZ、外围安全区域或
- <html> <head> <title>Untitled Document</title>
- python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照何种顺序去到父类寻找呢,尤其
- 最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了。今天由于工作需求,需要用Django实现单用户登录。大概意思就是跟QQ
- 给出地球上两点的经纬度,计算两点之间的球面距离。给出地球上三点的经纬度,求形成的三角形面积。对于这样的需求,可以通过使用半正失公式来计算得到
- 在继续阅读本文之前,您务必要对我们在本专栏中将要讨论的一些技术有所了解。我们要使用的技术包括:可扩展的样式表语言转换(Extensible
- math模块# 数学相关模块import mathr = math.floor(3.2) # 向下取整print(r)r = math.ce
- 本文实例讲述了Python元组常见操作。分享给大家供大家参考,具体如下:不能修改的列表就叫做元组。1 访问元素元组是使用圆括号来标识的。 定
- 在python中启动和关闭线程:首先导入threadingimport threading然后定义一个方法def serial_read()
- 有个excle表格需要做一些过滤然后写入数据库中,但是日期类型的cell取出来是个数字,于是查询了下解决的办法。基本的代码结构data =
- 本问主要写根据索引或者值对series和dataframe进行排序的实例讲解代码:#coding=utf-8import pandas as
- 将时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果如:{‘year':2018,‘month