mysql 批量插入数据过多的解决方法

使用场景:测试时需要插入100w的数据,跑sql脚本插入非常慢。存储过程如下://DELIMITERDROP PROCEDURE if EXISTS createAmountCount;create PROCEDURE createAmountCount()BEGINDECLARE i int;set i=0;drop table if exists person ;create table person(id

使用场景:

测试时需要插入100w的数据,跑sql脚本插入非常慢。

存储过程如下:

i i () innodb charset i person (name,age) (CONCAT( ii

解决方案:

1. 使用sql 生成100w数据到txt文件中。

main(String[] args)
BufferedWriter writer = BufferedWriter( FileWriter( File(“D:/driver/data.txt”),( i=0;i<1000000;i++(i%10==0"赵"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==1"钱"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==2"孙"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==3"李"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==4"郑"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==5"吴"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==6"周"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==7"王"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==8"张"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"(i%10==9"刘"+(i/10)+"\t"+ ()(Math.random()*100)+"\n"

2. 数据库中将数据导入表中:

innodb charset<span style=”color: #0000ff;”>load data local infile <span style=”color: #ff0000;”>'<span style=”color: #ff0000;”>D:/driver/data.txt<span style=”color: #ff0000;”>’
<span style=”color: #0000ff;”>into <span style=”color: #0000ff;”>table<span style=”color: #000000;”> person(name,age);

<span style=”color: #0000ff;”>select <span style=”color: #ff00ff;”>count(<span style=”color: #808080;”>*) <span style=”color: #0000ff;”>from person;

耗费时间:

data local infile
.067s

本方案的缺点:

1.权限。 非admin用户没有导入。

2. 写文件代码。对测试人员来说,写文件不仅仅限于java,可以使用任何语言实现之。

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部