加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql – 如何使用随机数据生成1000000行?

发布时间:2021-03-09 03:28:47 所属栏目:编程 来源:网络整理
导读:配景 我正在研究某种数据记录器. 我想实行1000000(1M)行所需的存储空间以及Raspberry Pi如那里理赏罚这样的大表.我想用分组,计较均匀值和其他机能尝试来运行一些查询. 我的表看起来像这样: CREATE TABLE `data` ( `id` bigint(20) NOT NULL AUTO_INCREMENT,`dat

配景

我正在研究某种数据记录器.

我想实行1000000(1M)行所需的存储空间以及Raspberry Pi如那里理赏罚这样的大表.我想用分组,计较均匀值和其他机能尝试来运行一些查询.

我的表看起来像这样:

CREATE TABLE `data` 
(
  `id`         bigint(20) NOT NULL      AUTO_INCREMENT,`datetime`   timestamp  NULL          DEFAULT CURRENT_TIMESTAMP,`channel`    int(11)                  DEFAULT NULL,`value`      float                    DEFAULT NULL,PRIMARY KEY (`id`)
)

如安在MySQL中添补1亿行?

要求:

> data.datetime字段:随机时刻戳,但仅限一年
> data.value field:给定范畴内的随机浮点数(譬喻0.00-100.00)
> data.id是自动增量,无需体谅
> data.channel始终为1,也不必要体谅它

我对SQL有点相识,但我不善于PL / SQL,SQL中的轮回等.

编辑:

为了说清晰 – 我正在行使MySQL 5.5.

提到PL / SQL是我的错误,我以为PL /代表SQL中的措施成果,而不只仅是Oracle.

最佳谜底 实行行使stored procedure(用祈望的行数替代1000,用测试年取代2014,也见generate random timestamps in mysql)

CREATE TABLE `data` 
(
  `id`         bigint(20) NOT NULL      AUTO_INCREMENT,PRIMARY KEY (`id`)
);


DELIMITER $$
CREATE PROCEDURE generate_data()
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 1000 DO
    INSERT INTO `data` (`datetime`,`value`,`channel`) VALUES (
      FROM_UNIXTIME(UNIX_TIMESTAMP('2014-01-01 01:00:00')+FLOOR(RAND()*31536000)),ROUND(RAND()*100,2),1
    );
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data();

修改您的需求.删除措施:

DROP PROCEDURE generate_data;

大概这可以给你一个开始!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读