MYSQL批量插入千万级数据只需百秒
2017-02-23 21:45
106 查看
1.首先创建一张student表
create table(id int(20)
NOT NULL AUTO_INCREMENT,sex char(1),name varchar(20));
2.创建两个随机函数,用来生成用户名和性别
#随机生成name
delimiter $$
CREATE FUNCTION rand_name(n INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE chars_str varchar(100) DEFAULT
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,substring(chars_str ,
FLOOR(1 + RAND()*52 ),1));#52代表在52个字母中随即找出一个
SET i = i +1;
END WHILE;
RETURN return_str;
END
$$
#随机生成性别
delimiter $$
CREATE FUNCTION rand_sex(n INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE chars_str varchar(100) DEFAULT '01';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,
substring(chars_str , FLOOR(1 + RAND()*2 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END
$$
3.写存储过程,思路是首先生成数据,然后一起commit
delimiter $$
CREATE PROCEDURE insertData()
begin
set @a=1; #学号
SET autocommit=0;
while @a<100000000 do #如果@a<2000010001则返回true,继续执行
#如果@a<2000010001则返回true,继续执行
set @b=rand_name(5); #姓名,随即赋值,值为5位a-zA-Z的任意组合
set @c=rand_sex(1); #性别,随即赋值,值为1位,0或者1
insert into student(name,sex) values(@b,@c);
set @a=@a+1;
end while;
COMMIT;
End
$$
create table(id int(20)
NOT NULL AUTO_INCREMENT,sex char(1),name varchar(20));
2.创建两个随机函数,用来生成用户名和性别
#随机生成name
delimiter $$
CREATE FUNCTION rand_name(n INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE chars_str varchar(100) DEFAULT
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,substring(chars_str ,
FLOOR(1 + RAND()*52 ),1));#52代表在52个字母中随即找出一个
SET i = i +1;
END WHILE;
RETURN return_str;
END
$$
#随机生成性别
delimiter $$
CREATE FUNCTION rand_sex(n INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE chars_str varchar(100) DEFAULT '01';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,
substring(chars_str , FLOOR(1 + RAND()*2 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END
$$
3.写存储过程,思路是首先生成数据,然后一起commit
delimiter $$
CREATE PROCEDURE insertData()
begin
set @a=1; #学号
SET autocommit=0;
while @a<100000000 do #如果@a<2000010001则返回true,继续执行
#如果@a<2000010001则返回true,继续执行
set @b=rand_name(5); #姓名,随即赋值,值为5位a-zA-Z的任意组合
set @c=rand_sex(1); #性别,随即赋值,值为1位,0或者1
insert into student(name,sex) values(@b,@c);
set @a=@a+1;
end while;
COMMIT;
End
$$
相关文章推荐
- MySQL批量千万级数据SQL插入性能优化<细读>
- mysql批量插入数据
- C#结合MsSql,MySql批量插入不重复数据思路
- mysql批量插入随机数据并判断重复
- MySQL批量插入数据脚本
- MySql批量插入数据--存储过程
- 使用存储过程向MySQL批量插入数据
- MySql 快速插入千万级大数据
- mysql批量插入一万条数据
- PHP MySQL批量插入数据的优化方法
- Mysql 千万级数据量插入和查询应该怎么优化
- 在Python中向MySQL批量插入数据的方法
- Mysql批量插入随机数据改进版_设置表主键为自增,免得主键冲突
- mysql批量插入数据方法
- mysql批量插入数据方法
- python向mySQL批量插入数据的方法
- Mysql 千万级数据量插入和查询应该怎么优化
- python使用MySQLdb向mySQL批量插入数据的方法
- mysql批量插入数据方法
- 使用Mybatis向MySQL批量插入数据