前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL系列之批量写入给定时间范围内的数据

MySQL系列之批量写入给定时间范围内的数据

作者头像
SmileNicky
发布2021-04-08 13:31:32
1.1K0
发布2021-04-08 13:31:32
举报
文章被收录于专栏:Nicky's blog

需求:最近需要在mysql数据库中造大量数据进行测试,而且要求要在某段时间内,本来想通过存储过程写,不过觉得麻烦,所以想到直接通过sql写

前提条件:业务表(sys_user_action_log )有大量的数据,你能批量写的数据不能超过业务表的数据

代码语言:javascript
复制
INSERT INTO sys_user_action_log (
  seq,
  ip,
  url,
  domain,
  title,
  referrer,
  lang,
  useragent,
  sh,
  sw,
  cd,
  account,
  `action`,
  `time`,
  usercode
) 
SELECT 
  REPLACE(UUID(), '-', ''),
  'ip',
  'http://127.0.0.1/login.do',
  'domain',
  '登录',
  'referrer',
  'zh-cn',
  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15',
  '1440',
  '2560',
  '24',
  'System',
  '基础数据_用户登录',
  FROM_UNIXTIME(
    UNIX_TIMESTAMP('2020-01-01 12:00:00') + FLOOR(0 + (RAND() * 31536000))
  ),
  'admin' FROM t_user_action_log LIMIT 0,1000;

FROM_UNIXTIME( UNIX_TIMESTAMP('2020-01-01 12:00:00') + FLOOR(0 + (RAND() * 31536000)) )

  • UNIX_TIMESTAMP函数以一个时间为基准,在0到1年的基础日期中添加随机的秒数,并转为DATETIME
  • 31536000 = 60*60*24*365

sure , 新建存储过程也是可以的,在sqlyog,选中数据库,右键->Create->Stored Procedure…

代码语言:javascript
复制
DELIMITER $$

USE `t_base`$$

DROP PROCEDURE IF EXISTS `proc_batch_insert`$$

CREATE DEFINER=`root`@`%` PROCEDURE `proc_batch_insert`()
BEGIN
  DECLARE i INT ;
  SET i = 0;
  WHILE
    i < 1000 DO INSERT INTO t_user_action_log (
      seq,
      ip,
      url,
      domain,
      title,
      referrer,
      lang,
      useragent,
      sh,
      sw,
      cd,
      account,
      `action`,
      `time`,
      usercode
    ) 
    VALUES
      (
       REPLACE(UUID(), '-', ''),
	  'ip',
	  'http://127.0.0.1/login.do',
	  'domain',
	  '登录',
	  'referrer',
	  'zh-cn',
	  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15',
	  '1440',
	  '2560',
	  '24',
	  'System',
	  '基础数据_用户登录',
	  FROM_UNIXTIME(
	    UNIX_TIMESTAMP('2020-01-01 12:00:00') + FLOOR(0 + (RAND() * 31536000))
	  ),
	  'admin'
      ) ;
     SET i = i+1;
  END WHILE ;
END$$

DELIMITER ;

调用存储过程:

代码语言:javascript
复制
CALL proc_batch_insert();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档