首页 新闻 会员 周边 捐助

c#解析海量数据文本排重问题(求助高手帮忙)[

0
悬赏园豆:50 [已关闭问题]

我现在要解析一个800M的文本文件,然后进行数据统计,这个文本文件的格式基本如下
[2009-08-14 09:00:36] logtype:[photo] company:[dell] uid[2031]
[2009-08-14 09:00:37] logtype:[music] company:[dell] uid[2039]
[2009-08-14 09:00:38] logtype:[music] company:[IBM] uid[2038]
[2009-08-14 09:00:39] logtype:[music] company:[NOKIA] uid[2059]

此数据文件我己经解析到临时表datatable中

我现在要进行排重操作

比如我要取company是dell的项,因为其中有两个,我在进行统计时只统计一次就可以了,在SQL中可以用distinct进行操作

我现在的前提是这个文本数据量太大不能插入到数据库里面,请高手指点如何利用datatable进行排重操作.谢谢!

Jerry's Paradise的主页 Jerry's Paradise | 初学一级 | 园豆:137
提问于:2009-10-14 20:12
< >
分享
其他回答(5)
0

“海量”已经那么不值钱了啊。

你既然选择读到内存中,为啥要用DataTable,读成对象,然后LINQ咯。

Jeffrey Zhao | 园豆:1629 (小虾三级) | 2009-10-14 23:24
0

也许还停留在3.5以前的版本吧。不过随便google一下都有很多资料的,比如这个:

http://weblogs.asp.net/eporter/archive/2005/02/10/370548.aspx

麒麟.NET | 园豆:3614 (老鸟四级) | 2009-10-14 23:54
0

800M 数据插入到数据库应该没有太大问题吧,数据库本来就是用于处理大量数据的,800M的数据量感觉也不是特别大。

eaglet | 园豆:17139 (专家六级) | 2009-10-15 07:49
0

如果只是统计一下有多少家公司,我觉得不需要将数据放数据库,只需要用i/o操作读文件,一次读一行,然后分析每一条记录的company的值,存入到一个ArrayList中,就能实现统计公司数量了。至于怎么分析每一条记录,可以用正则来实现。

踏歌&而行 | 园豆:205 (菜鸟二级) | 2009-10-15 11:35
0

用ssis去实现试试.

秋雨 | 园豆:442 (菜鸟二级) | 2009-10-15 15:40
0

文本数据量太大不是不能插入到数据库里面的理由吧
不想装大型数据库的话,建议用sqllite

楼主说的排重是什么意思,要把公司名相同的其他记录删除么

找到重复的删除就行了

明月我心 | 园豆:250 (菜鸟二级) | 2009-10-17 16:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册