博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL小实践一:快速插入1000万条数据到MySQL数据库中
阅读量:6823 次
发布时间:2019-06-26

本文共 2849 字,大约阅读时间需要 9 分钟。

今天在网上看到一篇博文,题目是:
4分钟插入1000万条数据到mysql数据库中,觉得很有意思,就记录下来供自己学习。
MySQL版本:mysql-5.7.22-winx64

1,设置MySQL数据库表的容量

数据库表的默认容量是:4M,如果存储的数据超限的话会报错。
在windows控制台输入
mysql -uroot -p,进入MySql数据库,输入
set global max_allowed_packet = 100*1024*1024;注意后边的
分号

2,主要代码

public static void main(String[] args) {        final String driver = "com.mysql.jdbc.Driver";        final String url = "jdbc:mysql://localhost:3306/project";        final String user = "root";        final String password = "253432";        Connection conn = null;        PreparedStatement pst =  null;        long beginTime = 0;        long endTime = 0;        try {            Class.forName(driver);//指定连接类型            conn = DriverManager.getConnection(url, user, password);            if(conn != null) {                System.out.println("获取连接成功");                beginTime = new Date().getTime();//开始计时                String sqlPrefix = "insert into test (id,num) values ";                // 保存sql后缀                StringBuffer suffix = new StringBuffer();                // 设置事务为非自动提交                conn.setAutoCommit(false);                // 比起st,pst会更好些                pst = (PreparedStatement) conn.prepareStatement("");//准备执行语句                // 外层循环,总提交事务次数                for (int i = 1; i <= 100; i++) {                    suffix = new StringBuffer();                    // 第j次提交步长                    for (int j = 1; j <= 100000; j++) {                        // 构建SQL后缀                        suffix.append("('"+ UUID.randomUUID().toString()+"','"+i*j+"'"+"),");                    }                    // 构建完整SQL                    String sql = sqlPrefix + suffix.substring(0, suffix.length() - 1);                    // 添加执行SQL                    pst.addBatch(sql);                    // 执行操作                    pst.executeBatch();                    // 提交事务                    conn.commit();                    // 清空上一次添加的数据                    suffix = new StringBuffer();                }                endTime = new Date().getTime();//开始计时            }else {                System.out.println("数据库连接失败");            }        } catch (ClassNotFoundException e) {            e.printStackTrace();            System.out.println("com.mysql.jdbc.Driver驱动类没有找到");        } catch (SQLException e) {            e.printStackTrace();            System.out.println("数据库地址错误");        }finally {//释放资源            System.out.println("插入成功,所有时间:"+ (endTime-beginTime));            if(conn != null) {                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if(pst != null) {                try {                    pst.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }            }

3,运行结果

可以看到用了两分钟

clipboard.png

转载地址:http://eqrzl.baihongyu.com/

你可能感兴趣的文章
AI领域三大范式的发展简史
查看>>
《云计算:原理与范式》一第2章 迁移到云2.1 引言
查看>>
《工业控制网络安全技术与实践》一一1.5 本章小结
查看>>
报道称土耳其屏蔽网盘和GitHub以防止邮件泄露
查看>>
工信部张峰:统一的5G标准才能共享产业规模效应
查看>>
色情网站用户数据黑市开卖 不能说的“大人物”有哪些
查看>>
美最大IDC服务商Equinix宣布将继续使用可再生能源
查看>>
大规模实时数据处理openPDC
查看>>
美司法部要求Facebook配合国税局查税
查看>>
wxWidgets(2):一个好用C/C++ php 开源IDE —— CodeLite IDE
查看>>
Appium环境抢建(for web browser test)
查看>>
安防云计算核心技术探讨
查看>>
可从网站抓取数据的数据析取平台Import.io获1300万美元A轮融资
查看>>
混合云VPC组网场景和方案分享(一)
查看>>
Syniverse为亚洲100多家运营商提供一系列服务
查看>>
“光伏双反”与“201条款”有何差异?
查看>>
Android集成测试
查看>>
能源互联网将如何开拓光伏新市场?
查看>>
《Hadoop与大数据挖掘》一2.4.1 HDFS Java API操作
查看>>
《iOS App界面设计创意与实践》——iOS开发工具和资源
查看>>