mysql 批量插入数据过多的解决方法
使用场景:
测试时需要插入100w的数据,跑sql脚本插入非常慢。
存储过程如下:
//DELIMITER
DROP PROCEDURE if EXISTS createAmountCount;
create PROCEDURE createAmountCount()
BEGIN
DECLARE i int;
set i=0;
drop table if exists person ;
create table person(
id int not null auto_increment,
name varchar(40) not null,
age int,
primary key(id)
)engine=innodb charset=gb2312;
while i<10000
DO
insert into person (name, age) values(CONCAT('usercode',i));
set i=i+1;
end while;
END;
//DELIMITER
CALL createAmountCount();
解决方案:
1. 使用sql 生成100w数据到txt文件中。
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D:/driver/data.txt"), true));
for(int i=0;i<1000000;i++){
if(i%10==0){
writer.write("赵"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}if(i%10==1){
writer.write("钱"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}
if(i%10==2){
writer.write("孙"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}if(i%10==3){
writer.write("李"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}
if(i%10==4){
writer.write("郑"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}if(i%10==5){
writer.write("吴"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}
if(i%10==6){
writer.write("周"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}if(i%10==7){
writer.write("王"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}
if(i%10==8){
writer.write("张"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}if(i%10==9){
writer.write("刘"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");
}
}
writer.close();
}
2. 数据库中将数据导入表中:
create table person(
id int not null auto_increment,
name varchar(40) not null,
age int,
primary key(id)
)engine=innodb charset=gb2312; load data local infile 'D:/driver/data.txt'
into table person(name,age); select count(*) from person;
耗费时间:
[SQL]load data local infile 'D:/driver/data.txt'
into table person(name,age);
受影响的行: 1000000
时间: 10.067s
本方案的缺点:
1.权限。 非admin用户没有导入。
2. 写文件代码。对测试人员来说,写文件不仅仅限于java,可以使用任何语言实现之。
mysql 批量插入数据过多的解决方法的更多相关文章
- MySQL批量插入数据的几种方法
最近公司要求测试数据库的性能,就上网查了一些批量插入数据的代码,发现有好几种不同的用法,插入同样数据的耗时也有区别 别的先不说,先上一段代码与君共享 方法一: package com.bigdata; ...
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...
- SQL 2005批量插入数据的二种方法
SQL 2005批量插入数据的二种方法 Posted on 2010-07-22 18:13 moss_tan_jun 阅读(2635) 评论(2) 编辑 收藏 在SQL Server 中插入一条数据 ...
- [转]mysql导入导出数据中文乱码解决方法小结
本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...
- python使用MySQLdb向mySQL批量插入数据的方法
该功能通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理. 今天用这个函数完成了批量插入 例程: def test_insertDB(options) ...
- MyBatis 批量插入数据的 3 种方法!
批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于<MyBatis Plus 批量数据插入功能,yyds!>的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 ...
- mysql批量插入数据的基类
自己设计的一个mysql数据库批量添加数据的基类.用于批量向mysql数据库添加数据,子类实现起来很简单,自测性能也还不错. 1.基类实现-BatchAddBase using System.Coll ...
- SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍 SQL Server支持的两种批 ...
- SQL Server 批量插入数据的两种方法(转)
此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/4360030.aspx 在SQL Server 中插入一条 ...
随机推荐
- Python pycurl
常用方法: pycurl.Curl() #创建一个pycurl对象的方法 pycurl.Curl(pycurl.URL, http://www.google.com.hk) #设置要访问的URL py ...
- 查看linux服务器中的apache是否安装以及安装路径
1.可以通过 apachectl -v 查看apache是否安装,如果安装了的话会显示版本号: 2.如果通过rpm包安装的话可以用 rpm -q httpd 查看,如果安装的的话会显示包的名称
- SRM 508 DIV1 500pt(DP)
题目简述 给定一个大小为 n的序列(n<=10)R,要求你计算序列A0, A1, ..., AN-1的数量,要求A序列满足A0 + A1 + ... + AN-1 = A0 | A1 | ... ...
- Spark RDD概念学习系列之RDD与DSM的异同分析(十三)
RDD是一种分布式的内存抽象,下表列出了RDD与分布式共享内存(Distributed Shared Memory,DSM)的对比. 在DSM系统[1]中,应用可以向全局地址空间的任意位置进行读写操作 ...
- Delimiter must not be alphanumeric or backslash 问题及解决
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in 正则表达 ...
- 修改Oracle 10g Express Edition默认的8080端口
http://sucre.blog.51cto.com/1084905/475531 ————————————————————————————————————————————————————————— ...
- BAT-使用BAT方法清理系统垃圾
@echo offecho 正在清理......del /f /s /q %systemdrive%\*.tmpdel /f /s /q %systemdrive%\*._mpdel /f /s /q ...
- HDU 1068 Girls and Boys (二分图最大独立集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 有n个同学,格式ni:(m) n1 n2 n3表示同学ni有缘与n1,n2,n3成为情侣,求集合 ...
- Map 排序
/** * 通过map 的 value 排序,并返回排序后的第一个条目 * * @param m 待排序集合 * @param desc true:降序排序,false:升序排序 * @return ...
- .NET Reflector插件FileDisassembler还原源码
NET Reflector,它是一个类浏览器和反编译器,可以分析程序集并向您展示它的所有秘密..NET 框架向全世界引入了可用来分析任何基于 .NET 的代码(无论它是单个类还是完整的程序集)的反射概 ...