1.上一章节将采集回来的数据直接插入数据库
select * from (
select id,temp,hum,no,time,'0' type from iot_DuanYaBanChengPin
union all
select id,temp,hum,no,time,'1' from iot_JiJiaBanChengPin
union all
select id,temp,hum,no,time,'2' from iot_LvDing
union all
select id,temp,hum,no,time,'3' from iot_YaZhuChengPin
)t
在原来数据库中将数据库中右键点击新建V视图,将数据整合起来方便下一步操作
2.数据定时清理
在 SQL Server 中,可以通过使用定时任务(如 SQL Server 代理作业)或者编写存储过程来实现基于数据量的自动删除。这种删除通常是基于特定表中的数据行数或者存储空间的大小来触发的。以下是两种常见的方法:
方法一:使用 SQL Server 代理作业和存储过程在上面的例子中, 是你想要自动删除数据的表名。存储过程会循环检查表中的数据量,如果超过 ,则会删除指定数量的行。
CREATE PROCEDURE AutoDeleteData
AS
BEGIN
DECLARE @MaxRowsToDelete INT = 1000; -- 设置每次删除的最大行数
WHILE (SELECT COUNT(*) FROM YourTable) > @MaxRowsToDelete
BEGIN
DELETE TOP (@MaxRowsToDelete) FROM YourTable;
END
END
- 在上面的例子中, 是你想要自动删除数据的表名。存储过程会循环检查表中的数据量,如果超过 ,则会删除指定数量的行。
YourTable
AutoDeleteData
@MaxRowsToDelete
-
创建 SQL Server 代理作业:创建一个 SQL Server 代理作业,以便定期执行上述存储过程。
- 打开 SQL Server Management Studio (SSMS)。
- 展开 SQL Server 代理。
- 创建一个新的作业,定义作业的名称、描述和调度计划。
- 在作业步骤中,添加一个 T-SQL 脚本步骤,调用上面创建的存储过程 。
AutoDeleteData
-
设置作业调度:在作业中设置适当的调度计划,例如每日、每周或者每月运行一次,具体取决于你的需求和数据删除策略。
方法二:使用 SQL Server 表触发器
另一种方法是使用表触发器来在数据插入时检查表中的数据量,并删除超出指定阈值的数据。这种方法需要小心,因为触发器会影响写入性能,并且需要确保在删除操作中不会造成死锁或性能问题。
1.创建表触发器:编写一个触发器,监视表中的插入操作,并在插入后检查表中的数据量,然后进行删除。
CREATE TRIGGER Trig_AutoDeleteData
ON YourTable
AFTER INSERT
AS
BEGIN
DECLARE @MaxRowsToDelete INT = 1000; -- 设置每次删除的最大行数
WHILE (SELECT COUNT(*) FROM YourTable) > @MaxRowsToDelete
BEGIN
DELETE TOP (@MaxRowsToDelete) FROM YourTable;
END
END
2.这个触发器会在每次向 插入数据后执行,检查表中的数据量是否超过 ,如果超过则删除指定数量的行。
-
注意事项:使用触发器时要小心,确保删除操作的效率和安全性,避免对表的写入操作造成影响。
无论使用哪种方法,都需要仔细评估数据删除策略,并确保删除操作不会意外影响到系统性能或数据完整性。