【发布时间】:2018-01-31 08:54:15
【问题描述】:
我有一个 176mb 的 .tab 文件,其中包含 780k 条记录,我必须每天将其加载到 Access 并删除旧数据。我也希望 ImportDate 在同一个表中。
我尝试了不同的导入方法,但速度真的很慢。使用 DAO 大约需要 14 分钟来导入和插入日期。我尝试使用 DoCmd,但它的速度同样慢,甚至更多。我无法删除该表,但需要将其插入,因为 access 没有准确地设置字段的属性。我还发现每次都需要压缩数据库,否则它会变大。
如何才能更快地导入文件?手动操作不会花那么长时间。
这是我尝试过的:
compactfile = accdbfilepath
srcfile = "filepath\filename2017_be.accdb"
moaqdate = "8/22/2017"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile srcfile, compactfile
Set db = OpenDatabase(compactfile)
db.Execute "DELETE * FROM [MOAQ]"
db.Execute ("insert INTO [MOAQ] select * FROM
[Text;HDR=YES,FMT=TabDelimited;Database=" & accesspath & "].[" &
filenametotab & "]"), dbFailOnError
db.Execute "update [MOAQ] set importdate =(""" & moaqdate & """)"
db.Close
destinationfile = "filepath\filename2017_be.accdb"
Application.CompactRepair compactfile, destinationfile
fso.CopyFile destinationfile, srcfile
Kill destinationfile
Set fso = Nothing
【问题讨论】:
-
我想说,除非您打算考虑切换到 SQL Server 或 SQL Server Express,否则除了在等待时喝杯咖啡之外,您可能别无选择。如果您使用的是 SQL Server,则可以使用非常快的 Bulk Insert。
-
您还尝试了哪些其他方法?有
DoCmd.TransferSpreadsheet和DoCmd.RunSavedImportExport,后者应该相当于手动导入。