如何实现88秒插入1000万条数据到MySQL数据库表
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章将为大家详细讲解有关如何实现88秒插入1000万条数据到MySQL数据库表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我用到的数据库为,mysql数据库5
千家信息网最后更新 2025年01月22日如何实现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安全错误
数据库的锁怎样保障安全
数据库技术初步认识的特点
网络安全直播观后感500字
计算机网络技术招生调查
5g网络技术华为占多少
和平精英怎么更改最新服务器
软件开发寿命短
网络安全专业自考本科
公安部通报网络安全
数据库按时间名称排序
查看联想服务器型号
服务器出厂不带硬盘吗
企业网络安全直接责任人指谁
阿里云服务器购买不了怎么办
快手数据库多久清理一次
xbox战地怎么换服务器
常州软件开发咨询报价
考研跨专业考软件开发专业
共享软件开发费用
宜兴软件开发代理价钱
护苗.网络安全课课件
项目合作软件开发合作协议
软件开发项目责任补充协议
软件开发需要的环境及工具
数据库DML命令一般有
数据库传输库
高光谱数据库流程图
t3数据库是干嘛的
服务器配置带外管理ip
江门定制冷库软件开发
在服务器安装打印机