数据库一次性插入10万条数据的方式

1.选择方式:  原生Jdbc  

过程:

a.模拟生成数据


package com.ruanjian.config;

import com.ruanjian.bean.Student;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;

/**
 * @autohr 任浩,
 * @create 2019-04-12-10:13
 *
 * 用来生成模拟数据
 */
public class InsertBenchMark {

    public List<Student> insertBench() {
        long start = System.currentTimeMillis();
        List<Student> list = new ArrayList<>();
        long row = 1;
        for (
                int j = 0;
                j < 10; j++) {
            for (int i = 0; i < 10000; i++) {
                String uuid = UUID.randomUUID().toString();
                String name = uuid.substring(0, 4);
                int sex = -1;
                if (Math.random() < 0.51) {
                    sex = 1;
                } else {
                    sex = 0;
                }
                String phone = (String) UUID.randomUUID().toString();
                list.add(new Student(row, name, sex, phone));
                row++;
            }
            int flag = 1;
            if (j == 999) {
                flag = -1;
            }
        }

        long end = System.currentTimeMillis();
        System.out.println((end - start) + "毫秒");
        return list;
    }

}

jdbc 连接 ( 首先我 默认你项目中添加了数据库连接所需要的jar包)

package com.ruanjian.config;

import com.ruanjian.bean.Student;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.List;

/**
 * @autohr 任浩,
 * @create 2019-04-19-15:37
 */
public class JDBCConfig {
    public void TestControlection() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
//?serverTimezone=GMT%2B8  这个好像是Mysql 版本的问题
        String url = "jdbc:mysql://localhost:3306/user?serverTimezone=GMT%2B8";
        Connection conn = DriverManager.getConnection(url, "root", "1234");
        //关闭事务
        System.out.println("获得连接" + conn);
        Statement stat = conn.createStatement();
        System.out.println("Statement对象"+stat);
        //获得开始时间
        long star = System.currentTimeMillis();
        //生成数据
        InsertBenchMark insertBenchMark = new InsertBenchMark();
        List<Student> students = insertBenchMark.insertBench();
        System.out.println("students = " + students.size()+"条");
        //拼接sql
        StringBuilder builder = new StringBuilder();
        builder.append("INSERT INTO student(id,name,age,email) VALUES");
        for (int i = 1; i < students.size(); i++) {
            builder.append("(" + i + ",'" + students.get(i).getName() + "'," + students.get(1).getAge() + ",'" + students.get(i).getEmail() + "'),");
        }
        builder.deleteCharAt(builder.length() - 1);
        System.out.println("sql = " + builder);
        //执行语句
        int row = stat.executeUpdate(builder.toString());
        long end = System.currentTimeMillis();
        System.out.println("(end-star) = " + (end - star)+"毫秒");
        System.out.println(row);
        // 5. 释放资源
        stat.close();
        conn.close();

    }

    public static void main(String[] args) throws Exception {
        JDBCConfig jdbcConfig = new JDBCConfig();
        jdbcConfig.TestControlection();
    }


}

总结:   insert into  表名 (id,name,email) values(1,'张三','1492921@qq.com')   

            insert into  表名 (id,name,email) values(2,'李四','1492922@qq.com')   

的方式  比

            insert into  表名 (id,name,email) values(1,'李四','1492922@qq.com')   , (2,'李四','1492922@qq.com')   的方式  慢太多太多


详细代码:见 https://gitee.com/Super_Ren/mybatis-plus.git

  • 1
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

qq_37418771

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值