mysql插入100000条记录的方法

1.存储过程

 

背景(运行的环境)就是命令行界面:可以实navicat,sqlyog.datagrip等:

截图如下

1.建表:

# 建表
create table test
(
    id          int      not null
        primary key,
    score       int      null,
    create_time datetime null
);

2.测试数据库存储过程时候可以使用:


create procedure testa()
begin
    select * from test;
#     select * from orders;
end;
call testa();   

3.存储过程代码:


CREATE PROCEDURE insert_many_user_scores(IN START INT(10),in max_num int(10))
    BEGIN
    DECLARE i INT DEFAULT 0;
    -- 模拟玩家英雄的星星数
    DECLARE score INT;
    DECLARE score2 INT;
    -- 初始注册时间
    DECLARE date_start DATETIME DEFAULT ('2017-01-01 00:00:00');
    -- 每个玩家的注册时间
    DECLARE date_temp DATETIME;
    SET date_temp = date_start;
    SET autocommit=0;
#     重复部分代码 
    REPEAT
    SET i=i+1;
#     INTERVAL expr type是要添加到起始日期值的间隔值。
    SET date_temp = date_add(date_temp, interval RAND()*60 second);
    -- 1-112 随机数,向上取整
    SET score = CEIL(RAND()*520);
    -- 如果达到了王者,继续模拟王者的星星数
    -- 插入新玩家
    INSERT INTO test(id, score, create_time) VALUES((START+i), score, date_temp);
    UNTIL i = max_num
    END REPEAT;
    COMMIT;
    END;

# 调用
CALL insert_many_user_scores(10000,100000)

结果截图如下:

参考资料:

mysql存储过程学习笔记

sql数据的下载链接:

链接:https://pan.baidu.com/s/1I7ROecgiTi1tFjCqsnyPmQ 
提取码:y4rt 
--来自百度网盘超级会员V5的分享

2.lua脚本:

在server 和cli 服务器端 和客户端同级建立 insert_user_scores.lua文件:

如图:

代码为:

-- 设置时间种子

math.randomseed(ARGV[1]) 

-- 设置初始的生成时间

local create_time = 1567769563 - 360024365*2.0 

local num = ARGV[2]

local user_id = ARGV[3]

for i=1, num do

 -- 生成 0 到 60 之间的随机数

 local interval = math.random(1, 60) 

 -- 产生 0 到 1 之间的随机数

 local temp = math.random(1, 112) 

 if (temp == 112) then

 -- 产生 0 到 100 之间的随机数

 temp = temp + math.random(0, 100) 

 end

 create_time = create_time + interval

 temp = temp + create_time / 10000000000

 redis.call('ZADD', KEYS[1], temp, user_id+i-1)

end

return 'Generation Completed'

运行命令

redis-cli -h localhost -p 6379 --eval insert_user_scores.lua user_score , 30 100000 10000

其中user_score 是在redis里面的容器名字:后续数字为生成的数量的一些操作:

进行指定区域和排序的数字的查看的命令:

相关查看的命令

ZREVRANGE user_score 0 -1 WITHSCORES --查看所有

ZREVRANGE user_score 0 9 -- 查看从0--9

ZSCORE user_score 10001 -- 查看第10001条数据

对启动redis的lua脚本的相关的命令可以查看:

lua的redis相关知识参考链接:

运行结果:

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

specialApe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值