Initial commit: 宁夏智慧养殖监管平台
This commit is contained in:
124
backend/insert-environment-data.js
Normal file
124
backend/insert-environment-data.js
Normal file
@@ -0,0 +1,124 @@
|
||||
const mysql = require('mysql2/promise');
|
||||
require('dotenv').config();
|
||||
|
||||
async function insertEnvironmentData() {
|
||||
let connection;
|
||||
|
||||
try {
|
||||
// 创建数据库连接
|
||||
connection = await mysql.createConnection({
|
||||
host: process.env.DB_HOST,
|
||||
port: process.env.DB_PORT,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME
|
||||
});
|
||||
|
||||
console.log('数据库连接成功');
|
||||
|
||||
// 创建环境监测时刻表
|
||||
const createTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS environment_schedules (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
farm_id INT NOT NULL,
|
||||
device_id VARCHAR(50),
|
||||
schedule_time TIME NOT NULL,
|
||||
temperature DECIMAL(5,2),
|
||||
humidity DECIMAL(5,2),
|
||||
monitoring_date DATE NOT NULL,
|
||||
status ENUM('active', 'inactive', 'maintenance') DEFAULT 'active',
|
||||
notes TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_farm_date (farm_id, monitoring_date),
|
||||
INDEX idx_schedule_time (schedule_time)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
`;
|
||||
|
||||
await connection.execute(createTableSQL);
|
||||
console.log('环境监测时刻表创建成功');
|
||||
|
||||
// 生成过去7天的数据
|
||||
const scheduleData = [];
|
||||
const currentDate = new Date();
|
||||
|
||||
// 每天的监测时间点
|
||||
const scheduleTimes = ['06:00:00', '12:00:00', '18:00:00', '22:00:00'];
|
||||
|
||||
for (let day = 0; day < 7; day++) {
|
||||
const date = new Date(currentDate);
|
||||
date.setDate(date.getDate() - day);
|
||||
const dateStr = date.toISOString().split('T')[0];
|
||||
|
||||
for (const time of scheduleTimes) {
|
||||
// 农场1的数据
|
||||
scheduleData.push([
|
||||
1, // farm_id
|
||||
'TEMP_001', // device_id
|
||||
time,
|
||||
(20 + Math.random() * 15).toFixed(2), // 温度 20-35°C
|
||||
(40 + Math.random() * 40).toFixed(2), // 湿度 40-80%
|
||||
dateStr,
|
||||
'active',
|
||||
`农场1 ${dateStr} ${time} 环境监测数据`
|
||||
]);
|
||||
|
||||
// 农场2的数据
|
||||
scheduleData.push([
|
||||
2, // farm_id
|
||||
'TEMP_002', // device_id
|
||||
time,
|
||||
(18 + Math.random() * 17).toFixed(2), // 温度 18-35°C
|
||||
(35 + Math.random() * 45).toFixed(2), // 湿度 35-80%
|
||||
dateStr,
|
||||
'active',
|
||||
`农场2 ${dateStr} ${time} 环境监测数据`
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// 批量插入数据
|
||||
const insertSQL = `
|
||||
INSERT INTO environment_schedules
|
||||
(farm_id, device_id, schedule_time, temperature, humidity, monitoring_date, status, notes)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`;
|
||||
|
||||
for (const data of scheduleData) {
|
||||
await connection.execute(insertSQL, data);
|
||||
}
|
||||
|
||||
console.log(`成功插入 ${scheduleData.length} 条环境监测数据`);
|
||||
|
||||
// 验证插入的数据
|
||||
const [rows] = await connection.execute(
|
||||
'SELECT COUNT(*) as count FROM environment_schedules'
|
||||
);
|
||||
console.log(`环境监测表总记录数: ${rows[0].count}`);
|
||||
|
||||
// 显示最近的几条记录
|
||||
const [recentRows] = await connection.execute(
|
||||
`SELECT farm_id, device_id, schedule_time, temperature, humidity,
|
||||
monitoring_date, status
|
||||
FROM environment_schedules
|
||||
ORDER BY monitoring_date DESC, schedule_time DESC
|
||||
LIMIT 5`
|
||||
);
|
||||
|
||||
console.log('\n最近的环境监测记录:');
|
||||
recentRows.forEach(row => {
|
||||
console.log(`农场${row.farm_id} | ${row.device_id} | ${row.monitoring_date} ${row.schedule_time} | 温度:${row.temperature}°C | 湿度:${row.humidity}% | 状态:${row.status}`);
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('操作失败:', error.message);
|
||||
} finally {
|
||||
if (connection) {
|
||||
await connection.end();
|
||||
console.log('\n数据库连接已关闭');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 运行脚本
|
||||
insertEnvironmentData();
|
||||
Reference in New Issue
Block a user