SQL server 实战篇(六)数据的去重和解析

1、首先利用系统存储过程sp_MSforeachtable (下图),统计数据库中各表的数据行数和占用的内存,并且按照降序排列`

create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20)) 
exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"  
select * from #t order by rows desc
drop table #t;

2、由于设备的问题,中心站接受了大量的重复数据,所以要对数据进行去重,代码如下:

delete from secondStore where T_MinuteStore_ID not in(select MIN(T_MinuteStore_ID) from secondStore group by siteID,itemID,genTime);

3、上传的数据有时会出现乱码和数据为0(数据为0,在这里没有任何意义,所以要去掉)的情况,利用ISNUMERIC 函数和cast函数对数据进行处理,代码如下:

delete from secondStore where ISNUMERIC(value)=0;
delete from secondStore where cast(value as float)=0;

4、对于极大和极小值进行查看,若超出范围,需删除(根据自己的需要定),代码如下:

select max(value),min(value)  from secondStore;

5、最后一步也是最重要的一步,利用存储过程对数据进行解析,表中的数据按照格式,分配到不同的表中(因本存储过程涉及一些公司资料,不便上传,有兴趣的可以参考SQL server实战篇(一)

EXEC New_DataAnalysis; --调用解析的函数,目的为看一次解析可以解析掉多少数据
Declare                --循环调用解析的函数
@loop int =0;
while @loop <100       --根据第一次解析的结果和表中的总数量,估算需要解析剩余数据量的次数
    begin
        EXEC New_DataAnalysis;
        set @loop = @loop +1;
   end

猜你喜欢

转载自blog.csdn.net/qq_39001049/article/details/81411648
今日推荐