【发布时间】:2014-01-20 03:20:47
【问题描述】:
下面是我的代码,虽然不完美,但可以运行,循环一个文本文件需要 30 多分钟。如何使用其他代码或方法提高循环文件的速度。请帮忙。
Open "C:\Users\steven.EOPESTATE\Desktop\Sharp Sales\TRMSAVE01.txt" For Input As #1
Do Until EOF(1)
Dim ITEMSQL As String
Line Input #1, varLine
testvarline = Split(varLine, ",")
If testvarline(0) = "$ITEM" Then
'Debug.Print testvarline(0), testvarline(1), testvarline(2), testvarline(3), testvarline(4), testvarline(5), testvarline(6), testvarline(7), testvarline(8), testvarline(9)
testvarline(0) = Replace(testvarline(0), "$", " ")
testvarline(7) = Replace(testvarline(7), ",,", " ")
ITEMSQL = "Insert into SalesItem([ITEMID], [2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]) Values (" & Chr(34) & "" & (testvarline(0)) & "" & Chr(34) & "," & (testvarline(1)) & "," & (testvarline(2)) & "," & (testvarline(3)) & "," & (testvarline(4)) & "," & (testvarline(5)) & "," & Chr(34) & "" & (testvarline(6)) & "" & Chr(34) & "," & (testvarline(9)) & "," & (testvarline(10)) & "," & (testvarline(11)) & "," & (testvarline(12)) & "," & (testvarline(14)) & ")"
Debug.Print ITEMSQL
DoCmd.RunSQL ITEMSQL
DoCmd.SetWarnings False
DoCmd.Echo False
End If
Loop
Close #1
【问题讨论】:
-
循环和读取文件真的很慢吗?我怀疑 SQL 插入是您花费最多时间的地方。
-
为什么不直接将文件导入新表,然后进行插入查询?
-
我认为读取文件没有任何问题,但是将每条记录插入数据库需要时间。可以使用 DoCmd.TransferText 命令导入。
-
您可以使用来自this page 的 MicroTimer 函数来测量循环不同部分所花费的时间。这将允许您确定需要优化的部分:SQL 或文件 IO。尽可能删除 Debug.Print 语句,这也有助于减慢速度。
-
嗯,home文件里有多少行?