使用ADO查询文本文件 - 性能糟糕

时间:2014-04-08 20:25:13

标签: excel-vba text-files oledb ado jet

我在Excel后面的VBA中编写了一些代码,以便从网络驱动器上的潜在巨大文本文件(10M +行)中提取一些摘要数字。在过去,这些数字已经在linux中使用greps来提取,但我希望能够实现一些可以通过单击Excel中的按钮来实现,以便于使用。

我的解决方案有效,但它比linux grep慢25倍 - 查询10M记录需要4分钟,而grep可以在10秒内完成。我不应该使用ADO吗?除了文本文件显然没有被索引这一事实之外,它为什么这么慢?是否有一个更好的解决方案仍然可以编码而没有太多的VBA麻烦,或者它是一个失败的原因?我使用的是Excel 2007和ADO 6.0库。以下是一些示例代码:

Sub RunSQL()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Extended Properties=""text;HDR=YES;FMT=Delimited"";" & _
    "Data Source=\\network\share\path\;"
rs.Open "select count(*) from Customers.tab where CHANGE_FLAG = 'Y'", cn
Range("A1").CopyFromRecordset rs

rs.Close
cn.Close

End Sub

0 个答案:

没有答案