TA的每日心情 | 无聊 2019-5-27 08:20 |
---|
签到天数: 4 天 [LV.2]圆转纯熟
|
一、思路
往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秒
到此这篇关于教你如何6秒钟往MySQL插入100万条数据的实现的文章就介绍到这了,更多相关MySQL插入100万条数据内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!
原文地址:https://www.jb51.net/article/194395.htm |
|