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应该怎么样才能比较快速一点如果有更好的算法,那么应该怎么做呢
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应该怎么样才能比较快速一点如果有更好的算法,那么应该怎么做呢
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
http://blog.csdn.net/lyserver/archive/2009/04/24/4106290.aspx
个人感觉很不错