我有一个.mb文件是176mb,有780k记录,我必须每天加载到Access并删除旧数据。我也希望将ImportDate放在同一个表中。
我尝试过不同的导入方法,而且速度非常慢。使用DAO导入和插入日期大约需要14分钟。我尝试使用DoCmd,但它的速度一样慢,如果不是更多的话。我无法删除表但需要插入表,因为访问不会准确地设置字段的属性。我还发现每次都需要压缩数据库,或者它变得越来越大。
如何更快地导入文件?手动完成并不需要那么长时间。
以下是我尝试的内容:
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
答案 0 :(得分:1)
我会做这样的事情:
compactfile = accdbfilepath
srcfile = "filepath\empty_MOAQ_table_only_be.accdb"
destinationfile = "filepath\MOAQ_table_be.accdb"
moaqdate = "8/22/2017"
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile srcfile, destinationfile, True
Set db = OpenDatabase(destinationfile)
db.Execute ("insert INTO [MOAQ] select #" & moaqdate & "# as importdate, * " & _
"FROM [Text;HDR=YES,FMT=TabDelimited;Database=" & accesspath & "].[" & filenametotab & "]"), dbFailOnError
db.Close
Set FSO = Nothing
在这种情况下,您不需要复制包含数据的文件两次,删除数据,执行压缩& amp;修复并更新日期。
将您的大表分成只有一个表的专用后端,使用空表(empty_MOAQ_table_only_be.accdb)创建此文件的副本,并将其复制到现有的专用后端,而不是双重处理大文件,删除和c&amp; r。< / p>
您可以与文件数据同时插入更新日期,无需更新。
它应该更快。