Excel批量导入如何做数据去重

您所在的位置:网站首页 excel去重功能 Excel批量导入如何做数据去重

Excel批量导入如何做数据去重

2024-03-13 23:51| 来源: 网络整理| 查看: 265

    大数据量总是离不开数据去重,去重分为几种类型,有些是部分字段相同,有些是全部字段相同,那么应该如何做到高效去除重复呢?

    小编在这里简单介绍两种去重方式,一种是Sql语句去重,一种是Linq语句去重,其实原理很像,只不过用的方式不太一样而已。

Sql语句去重

    假设现在有一个表名为People,里面有三个字段,id、name、age。另外一个表名为Department,有三个字段为id、name、peopleId。

1、单表查询,查询People表中所有不同的年龄

select distinct age from People 假如表中的年龄为23、24、23、25、23,用上面的语句查出来的结果就是23、24、25。

2、查找表中多余的重复记录,重复记录为单个字段(peopleId)

select * from Department where peopleId in (select peopleId from people group by peopleId having count(peopleId)>1)

3、对于完全重复的记录的删除

    如果表中有些记录完全一样,可以先将查询的记录放在一个临时表中,将原来的表记录删除,最后将临时表的数据导回原来的表中

create table 临时表 as (select distinct * from 原来表); delete from 原来表; insert into 原来表(select * from 临时表); delete from 临时表;     这些都是在对数据库进行操作的时候进行的去重,如何在向数据库写入之前进行去重操作呢,这就需要Linq语句去重,使得写入数据就是不重复的。

Linq语句去重

1、给Dictionary去重,去重后将不重复的值赋给List

Dictionary dicStaffSerieas = new Dictionary(); //查询dicSerieas得到字典staffSerieas(教师名,系别名) foreach (YzStaffEntity staff in staffList) { if (dictSeries.ContainsKey(staff.SeriesID)) { dicStaffSerieas.Add(staff.StaffName, dictSeries[staff.SeriesID]); //将教师名和教师所在的系别ID放在Dictionary中 } } //去重 List serieasName = new List(); //去重后接收数据的List var v = from arr in dicStaffSerieas.Values //dictionary中保存values的数组 group arr by arr into g select new { g.Key }; foreach (var r in v) { serieasName.Add(r.Key); //将去重后的数据放到List中 }

2、Distinct方法去重

假设还是上面的表People,用Distinct方法为:

List nameList = new List; nameList=people.Select(p=>p.name).Distinct().ToList();

3、DistinctBy方法去重

var query = people.DistinctBy(p => new { p.Id, p.Name });

4、用GroupBy方法去重

List distinctPeople = allPeople .GroupBy(p => new {p.Id, p.Name} ) .Select(g => g.First()) .ToList();

    上面这些内容只是简单介绍一下去重方法,各位大牛们有什么好的建议,请大家尽管提。

总结

    数据去重不是一件繁琐的事情,不过也是现在看来。最一开始做项目时,我所做的数据去重是从数据库中查出后,在前面进行去重,将不重复的数据循环放到另一个容器,再从另一个容器进行接下来的操作,这样一下就影响了效率,一旦数据库中数据特别多时,需要做去重的逻辑很复杂时,循环起来就会特别慢,就会特别影响性能。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3