我现在要解析一个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进行排重操作.谢谢!
“海量”已经那么不值钱了啊。
你既然选择读到内存中,为啥要用DataTable,读成对象,然后LINQ咯。
也许还停留在3.5以前的版本吧。不过随便google一下都有很多资料的,比如这个:
http://weblogs.asp.net/eporter/archive/2005/02/10/370548.aspx
800M 数据插入到数据库应该没有太大问题吧,数据库本来就是用于处理大量数据的,800M的数据量感觉也不是特别大。
如果只是统计一下有多少家公司,我觉得不需要将数据放数据库,只需要用i/o操作读文件,一次读一行,然后分析每一条记录的company的值,存入到一个ArrayList中,就能实现统计公司数量了。至于怎么分析每一条记录,可以用正则来实现。
用ssis去实现试试.
文本数据量太大不是不能插入到数据库里面的理由吧
不想装大型数据库的话,建议用sqllite
楼主说的排重是什么意思,要把公司名相同的其他记录删除么
找到重复的删除就行了