我们有一个包含超过100,000条记录的txt文件。我们将其导入Microsoft Access数据库。该文件有4列用空格分隔(vbTab作为分隔符," Sep"代码中的变量)。给定代码将每个列值与每行分开,并存储在临时变量中。然后使用sql将其插入数据库。
此代码使用最多需要10分钟才能进行编译。目前相同数据需要大约1小时。谁能请帮忙。查询优化是否会解决或存在其他问题。
While Not EOF(1)
Line Input #1, WholeLine
If WholeLine = "" Then GoTo EndMacro
NextPos = InStr(1, WholeLine, Sep)
TempVal1 = Mid(WholeLine, 1, NextPos - 1)
Pos = NextPos + 1
NextPos = InStr(Pos, WholeLine, Sep)
TempVal = Mid(WholeLine, Pos, NextPos - Pos)
strSignum = Trim(TempVal)
Pos = NextPos + 1
NextPos = InStr(Pos, WholeLine, Sep)
TempVal2 = Mid(WholeLine, Pos, NextPos - Pos)
Pos = NextPos + 1
NextPos = InStrRev(WholeLine, Sep)
TempVal3 = Mid(WholeLine, NextPos, Len(WholeLine) - NextPos)
If strSignum = "" Then GoTo NextRow
strSQL1 = "INSERT INTO HRMS_DATA
(User,OrgUnit,JobName,ParentOrganizationUnit) VALUES('" & Trim(TempVal) & "','" & Trim(TempVal1) & "','" & Trim(TempVal2) & "','" & Trim(TempVal3) & "');"
DoCmd.RunSQL strSQL1
RowNdx = RowNdx + 1
NextRow:
Wend
GoTo EndMacro
答案 0 :(得分:1)
您不需要所有VBA代码。 创建导入规范,保存并使用Do.Cmd TransferText方法。 这是一步一步的指南:
答案 1 :(得分:0)
这是一个记录集任务 - 而不是编码任务。你使用了错误的方法。做Rene的帖子 - 或其他方式:
创建文本文件的链接 使用文本文件作为源
设置Make Table查询