shell脚本批量添加数据

mysql本地表,百万级别的数据,测试下添加索引,添加字段,等各种效果

例如新建一张空表 tmp_user, 建表语句如下:

CREATE TABLE `tmp_user` (
	`id` INT(10) NOT NULL AUTO_INCREMENT,
	`user_name` VARCHAR(50) NOT NULL,
	`age` INT(10) NOT NULL,
	`create_time` DATETIME NOT NULL,
	`update_time` DATETIME NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

然后往表里面新增500万数据,shell脚本如下

#!/bin/bash

echo "==========start============="

user="cfyme"
passwd="caofangyi"

host="localhost"
db="wordpress"



sqlInsert="insert into tmp_user (user_name,age,create_time,update_time) values";
sql="$sqlInsert";
i=0;
MAX_COUNT=$1;
j=0;
while [ $i -lt $MAX_COUNT ]
do
    if [ $j -eq 1000 ]  
    then  
        sqlValues="('HELLO$i',$i % 99,now(),now());"
        sql="$sql $sqlValues"
        mysql -h$host  -u$user -p$passwd $db -e "$sql"
        j=0
        sql="$sqlInsert";
        d=$(date "+%Y-%m-%d %H:%M:%S")
        echo "add success, $d"
    else
        sqlValues="('HELLO$i',$i % 99,now(),now()),"
        sql="$sql $sqlValues"
    fi 

    i=$(($i+1))
    j=$(($j+1))
done

#去掉最后的逗号
sql=${sql%,*}
mysql -h$host  -u$user -p$passwd $db -e "$sql"
echo "===========end===========i==$i==j==$j"

运行脚本:sh  batchInsert.sh  5000000

脚本文件中每1000条批量插入,这样500万数据就添加进去了

然后添加索引:

ALTER table tmp_user ADD INDEX idx_user_name (`user_name`);

 

这样就可以根据explain 或者 desc 测试在大表情况下,各种索引的效果了

发表评论

邮箱地址不会被公开。