当前位置: 首页 > news >正文

mysql- 存储结构、存储函数,批量生成测试数据

批量生成传感器数据


DROP TEMPORARY TABLE IF EXISTS temp_numbers;
-- Create a temporary numbers table to help with generation
CREATE TEMPORARY TABLE IF NOT EXISTS temp_numbers (n INT);
INSERT INTO temp_numbers VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);-- Create a procedure to generate the data
DELIMITER //
CREATE PROCEDURE GenerateSensorData()
BEGINDECLARE sensor_count INT DEFAULT 25;DECLARE days_in_month INT DEFAULT 31;DECLARE hours_in_day INT DEFAULT 24;DECLARE intervals_per_hour INT DEFAULT 6; -- 10-minute intervals-- Generate data for each sensorSET @sensor = 1;WHILE @sensor <= sensor_count DO-- Generate data for each daySET @day = 0;WHILE @day < days_in_month DO-- Generate data for each hourSET @hour = 0;WHILE @hour < hours_in_day DO-- Generate data for each 10-minute intervalSET @interval = 0;WHILE @interval < intervals_per_hour DO-- Calculate current timestampSET @current_time = TIMESTAMPADD(MINUTE, @interval*10, TIMESTAMPADD(HOUR, @hour, TIMESTAMPADD(DAY, @day, '2025-01-01 00:00:00')));-- Generate realistic sensor values with daily patternsSET @temp = 15.0 + 10.0 * SIN(@hour * PI() / 12) + (RAND() * 4 - 2);SET @humidity = 50.0 + 30.0 * SIN(@hour * PI() / 12 + PI()) + (RAND() * 10 - 5);SET @pressure = 1013.0 + (RAND() * 20 - 10);SET @is_daytime = @hour BETWEEN 6 AND 18;SET @pollution_factor = IF(@is_daytime, 1.5 + RAND(), 0.5 + RAND() * 0.5);-- Insert the sensor readingINSERT INTO sensor_data (sensor_id, timestamp,temperature, humidity, pressure,pm25, pm10, co, no2, o3, so2,wind_speed, wind_direction, rainfall,light_intensity, sound_level,battery_voltage, signal_strength) VALUES (@sensor, @current_time,-- Environmental measurements (constrained to valid ranges)LEAST(GREATEST(@temp, -40), 85), -- TemperatureLEAST(GREATEST(@humidity, 0), 100), -- HumidityLEAST(GREATEST(@pressure, 950), 1050), -- Pressure-- Air quality (higher during daytime)LEAST(5.0 + @pollution_factor * (10 + RAND() * 30), 500), -- PM2.5LEAST(10.0 + @pollution_factor * (15 + RAND() * 40), 600), -- PM10LEAST(0.3 + @pollution_factor * (0.5 + RAND() * 2), 50), -- COLEAST(5.0 + @pollution_factor * (10 + RAND() * 30), 500), -- NO2LEAST(10.0 + @pollution_factor * (15 + RAND() * 30), 500), -- O3LEAST(2.0 + @pollution_factor * (5 + RAND() * 15), 500), -- SO2-- Wind measurementsLEAST(1.0 + RAND() * 10, 60), -- Wind speedFLOOR(RAND() * 360), -- Wind direction-- Rainfall (occasional)IF(RAND() > 0.98, ROUND(RAND() * 1.5, 2), 0), -- Rainfall-- Light intensity (day/night pattern)IF(@is_daytime, ROUND(30000 * (1 + SIN((@hour-12) * PI() / 12)) + RAND() * 5000, 2),ROUND(10 + RAND() * 5, 2)),-- Sound level (higher during day)ROUND(40 + IF(@is_daytime, 20 + RAND() * 10, 5 + RAND() * 5), 2),-- Device metricsROUND(3.5 + RAND() * 0.6, 2), -- Battery voltageFLOOR(-80 - RAND() * 40) -- Signal strength);SET @interval = @interval + 1;END WHILE;SET @hour = @hour + 1;END WHILE;SET @day = @day + 1;END WHILE;SET @sensor = @sensor + 1;END WHILE;
END //
DELIMITER ;-- Execute the data generation procedure
CALL GenerateSensorData();-- Clean up
DROP TEMPORARY TABLE IF EXISTS temp_numbers;
DROP PROCEDURE IF EXISTS GenerateSensorData;
http://www.lryc.cn/news/590367.html

相关文章:

  • ssl相关命令生成证书
  • 代码随想录算法训练营第五十天|图论part1
  • Python 日志轮换处理器的参数详解
  • watermark的作用
  • JS逆向 - YandexSmartCaptcha (worker线程)
  • Spring Boot 解决跨域问题
  • 基于SD-WAN的智慧高速解决方案:高效、低成本的智能交通实践
  • 高频面试雷区:Java Object六大核心方法源码剖析
  • socket和websocket的区别
  • python--杂识--20 sse与websocket区别
  • 【数据结构】栈与链表的区别
  • 构建足球实时比分APP:REST API与WebSocket接入方案详解
  • 【25】MFC入门到精通——MFC静态文本框 中字符串 连续输出 不覆盖先前的文本 换行输出
  • 基于深度学习的情感分析模型:从文本数据到模型部署
  • 推客系统开发:从零构建高并发社交平台的技术实践
  • 【前端】Vue3 前端项目实现动态显示当前系统时间
  • 每天一个前端小知识 Day 33 - 虚拟列表与长列表性能优化实践(Virtual Scroll)
  • Python 与JA3 库的应用
  • 接口幂等性设计:用Redis避免接口重复请求
  • 前端技术之---应用国际化(vue-i18n)
  • 中医文化学习软件,传承国粹精华
  • Java全栈面试实录:从电商支付到AIGC的深度技术考察
  • 什么是数据仓库?数据库与数据仓库有什么关系?
  • 基于WebRTC构建应用的可复用模块
  • Ansible 查看PostgreSQL的版本
  • Rocky9安装Ansible
  • Android CameraX使用
  • PyCharm高效入门指南
  • 深度解析:如何在 Windows 系统中高效配置 Android MCP 服务
  • 【Unity】IL2CPP相关理论知识学习