windows下有两个文本文件1.txt和2.txt,都是一行一行地写了很多条记录,比如1.txt里
test
test123
test123.com
[test]
2.txt里
abc
test
test123
abc.com
test.com现在我想做一些关于它们里面记录对比的操作,例如:找1.txt中有而2.txt里没有的记录,找1和2里面都有的记录,找2中某一条记录和1中某一条记录有关系的记录,比如2中的test123在1中的test123.com里这些操作都是一般情况下要遍历1和2中各条记录的,而且有二重的循环
如果这两个文件里都有几千几万或者是几十万条记录的话,应该怎么样省时省资源地得到我想要的结果呢??
现在我想用.vbs文件来做,因为这样的话不用在电脑上再安装什么其他的东西。如果方法上就用最简单的遍历1.txt中的每条记录,在每条记录中再遍历一次2.txt里的记录,然后一条条对比,那么,用vbs应该怎么样才能比较快速一点如果有更好的算法,那么应该怎么做呢

解决方案 »

  1.   

    文本文件可以直接作为数据库用,用sql语句比较吧
      

  2.   

    如果是单列数据,规范一下你的文本,加一个字段名称myField,直接用ADO读取,不知道速度如何:Option ExplicitDim strConnect As StringPrivate Sub Command1_Click()    Dim sql As String
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        
        Set cn = New ADODB.Connection
        cn.Open strConnect
        '返回文本1中存在文本2中不存在的myField
        sql = "select myField from [1.txt] where myField not in (select myField from [2.txt])"
        Set rs = cn.Execute(sql)
        
        While Not rs.EOF
            Debug.Print rs!myField
            rs.MoveNext
        Wend
        
        Set rs = Nothing
        Set cn = Nothing
        
    End SubPrivate Sub Form_Load()
        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & App.Path & ";" & _
            "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
    End Sub
    如果是多列文本,要加个配置文件schema.ini,标志一下分隔符,ini文件的内容(制表符):
    [1.txt]
    Format=TabDelimited
    [2.txt]
    Format=TabDelimited
      

  3.   

    参考
    http://blog.csdn.net/lyserver/archive/2009/04/24/4106290.aspx
    个人感觉很不错