咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 504|回复: 0

[Mysql] 教你如何6秒钟往MySQL插入100万条数据的实现

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-10-4 16:13:30 | 显示全部楼层 |阅读模式
    一、思路
    往MySQL中插入1000000条数据只花了6秒钟!
    关键点:

    1.使用PreparedStatement对象

    教你如何6秒钟往MySQL插入100万条数据的实现-1.jpg


    教你如何6秒钟往MySQL插入100万条数据的实现-2.jpg

    2.rewriteBatchedStatements=true 开启批量插入,插入只执行一次,所有插入比较快。

    教你如何6秒钟往MySQL插入100万条数据的实现-3.jpg

    二、 代码
    1. package test0823.demo1;
    2. import java.sql.*;
    3. /**
    4. * @author : Bei-Zhen
    5. * @date : 2020-08-24 0:43
    6. */
    7. public class JDBC2 {
    8.   //static int count = 0;
    9.   public static void main(String[] args) {
    10.     long start = System.currentTimeMillis();
    11.     conn();
    12.     long end = System.currentTimeMillis();
    13.     System.out.println("耗时:" + (end - start)/1000 + "秒");
    14.   }
    15.   public static void conn(){
    16.     //1.导入驱动jar包
    17.     //2.注册驱动(mysql5之后的驱动jar包可以省略注册驱动的步骤)
    18.     //Class.forName("com.mysql.jdbc.Driver");
    19.     //3.获取数据库连接对象
    20.     Connection conn = null;
    21.     PreparedStatement pstmt = null;
    22.     {
    23.       try {
    24.         //"&rewriteBatchedStatements=true",一次插入多条数据,只插入一次
    25.         conn = DriverManager.getConnection("jdbc:mysql:///test?" + "&rewriteBatchedStatements=true","root","root");
    26.         //4.定义sql语句
    27.         String sql = "insert into user values(default,?,?)";
    28.         //5.获取执行sql的对象PreparedStatement
    29.         pstmt = conn.prepareStatement(sql);
    30.         //6.不断产生sql
    31.         for (int i = 0; i < 1000000; i++) {
    32.           pstmt.setString(1,(int)(Math.random()*1000000)+"");
    33.           pstmt.setString(2,(int)(Math.random()*1000000)+"");
    34.           pstmt.addBatch();
    35.         }
    36.         //7.往数据库插入一次数据
    37.         pstmt.executeBatch();
    38.         System.out.println("添加1000000条信息成功!");
    39.       } catch (SQLException e) {
    40.         e.printStackTrace();
    41.       } finally {
    42.         //8.释放资源
    43.         //避免空指针异常
    44.         if(pstmt != null) {
    45.           try {
    46.             pstmt.close();
    47.           } catch (SQLException e) {
    48.             e.printStackTrace();
    49.           }
    50.         }
    51.         if(conn != null) {
    52.           try {
    53.             conn.close();
    54.           } catch (SQLException e) {
    55.             e.printStackTrace();
    56.           }
    57.         }
    58.       }
    59.     }
    60.   }
    61. }
    复制代码
    三、运行结果
    添加1000000条信息成功!
    耗时:6秒

    教你如何6秒钟往MySQL插入100万条数据的实现-4.jpg


    教你如何6秒钟往MySQL插入100万条数据的实现-5.jpg

    到此这篇关于教你如何6秒钟往MySQL插入100万条数据的实现的文章就介绍到这了,更多相关MySQL插入100万条数据内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/194395.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-28 21:56

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表