如何实现88秒插入1000万条数据到MySQL数据库表
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关如何实现88秒插入1000万条数据到MySQL数据库表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我用到的数据库为,mysql数据库5
千家信息网最后更新 2026年11月02日如何实现88秒插入1000万条数据到MySQL数据库表
这篇文章将为大家详细讲解有关如何实现88秒插入1000万条数据到MySQL数据库表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
我用到的数据库为,mysql数据库5.7版本的
首先自己准备好数据库表
其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下:
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
出现上面的错误是因为数据库表的 max_allowed_packet 这个配置没配置足够大,因为默认的为4M的,后来我调为100M就没报错了
set global max_allowed_packet = 100*1024*1024*
记住,设置好后重新登录数据库才能看的设置后的值
show VARIABLES like '%max_allowed_packet%'
代码如下:
package insert;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Date;import com.mysql.jdbc.PreparedStatement;public class InsertTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { final String url = "jdbc:mysql://127.0.0.1/teacher" ; final String name = "com.mysql.jdbc.Driver" ; final String user = "root" ; final String password = "123456" ; Connection conn = null ; Class.forName(name); //指定连接类型 conn = DriverManager.getConnection(url, user, password); //获取连接 if (conn!= null ) { System.out.println( "获取连接成功" ); insert(conn); } else { System.out.println( "获取连接失败" ); } } public static void insert(Connection conn) { // 开始时间 Long begin = new Date().getTime(); // sql前缀 String prefix = "INSERT INTO t_teacher (id,t_name,t_password,sex,description,pic_url,school_name,regist_date,remark) VALUES " ; try { // 保存sql后缀 StringBuffer suffix = new StringBuffer(); // 设置事务为非自动提交 conn.setAutoCommit( false ); // 比起st,pst会更好些 PreparedStatement 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( "('" + uutil.UUIDUtil.getUUID()+ "','" +i*j+ "','123456'" + ",'男'" + ",'教师'" + ",'www.bbk.com'" + ",'XX大学'" + ",'" + "2016-08-12 14:43:26" + "','备注'" + ")," ); } // 构建完整SQL String sql = prefix + suffix.substring( 0 , suffix.length() - 1 ); // 添加执行SQL pst.addBatch(sql); // 执行操作 pst.executeBatch(); // 提交事务 conn.commit(); // 清空上一次添加的数据 suffix = new StringBuffer(); } // 头等连接 pst.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } // 结束时间 Long end = new Date().getTime(); // 耗时 System.out.println( "1000万条数据插入花费时间 : " + (end - begin) / 1000 + " s" ); System.out.println( "插入完成" ); }}关于"如何实现88秒插入1000万条数据到MySQL数据库表"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
数据
数据库
万条
事务
时间
篇文章
后缀
时候
更多
准备
配置
不错
实用
成功
代码
信息
内容
前缀
备注
外层
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美国互联网科技
互联网科技公司官网
中国互联网科技发展
南京欣网互联网科技
互联网金融 科技创新
互联网金融监管科技
华脉科技工业互联网产品
蓝色互联网科技
隆华科技工业互联网
互联网科技有哪些公司
互联网公司黑科技创始人
西安小鹰速贷互联网科技有限公司
每天都有哪些好的互联网科技
领航科技大厦互联网公司
广州互联网高科技取餐柜
扫呗互联网科技有限公司
昆明中奇联合互联网科技
江苏互联网智能科技产品出厂价
科技互联网专业务虚会材料
科技发展第三阶段互联网时代
上海挚品互联网科技有限公司
河南真二互联网科技有限公司
深圳齐家互联网科技
海南科技产业互联网平台
银川新华互联网科技学校地址
欧洲十大科技互联网公司
湖南诚度互联网科技有限公司
长沙互联网科技
互联网金融科技元年
互联网对科技影响