背景
我正在研究某种数据记录器.
我想尝试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.
最佳答案
尝试使用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;
也许这可以给你一个开始!