我们经常会收到新的文件
然后就要添加到我们已有的文件里
但新文件里会有以前已经存在的数据
现在要求一个好算法
能高速合并成一个文件,已经存在的数据行就不再重复1.txt
 123
 234
 3452.txt
 234
 456合并结果文件
 123
 234
 345
 456

解决方案 »

  1.   

    把这两个文本文件当成数据库中的两个表(可以办得到),再用select distinct来执行sql语句,应该要快点。
      

  2.   

    关键问题是如何最大限度的减少磁盘读写。
    评咱这技术恐怕难实现。
    要是有oracle就好了。多开些线程读文件。用insert ... where ... not in table 插进去。读出来生成新文件
      

  3.   

    把这两个文本文件当成数据库中的两个表(可以办得到),再用select distinct来执行sql语句,应该要快点。用微软的ado fo text 驱动会慢死的
      

  4.   

    偶用oracle 试过插入100万行,不到3分钟
      

  5.   

    filemapping可以适合数据量大的文件交换,效率比较高
      

  6.   

    如果是要求文件的内容也要排序,就直接两路归并算法就行了,分别从两个里面读,然后比较哪个小就加到结果里,然后再往后。这样下去就可以了。有个前提是两个文件都得有序才行。
    如果结果不要求有序那么只需要生成一个索引文件就成了,每个已存在的记录根据md5 or crc32等算法生成一个数,然后把这个数排序放到索引文件中,新来数据的话只要同样算一个特征值,查找是否已存在,如果不存在就加到结果的末尾,如果存在就跳过。嗯。我觉得挺好的