使用VBA将文本文件导入MS Access表的最快方法是什么?



我只是想知道通过VBA将数据从文本文件导入Microsoft访问表的最快方法是什么。

据我所知,有3种方法。

  1. 使用docmd.transfertext方法上传整个文件。如果有错误,请稍后处理错误。

  2. 使用
  3. "行输入"语句逐行读取文本,然后使用recordset.add method逐行添加记录。

  4. 设置新的Excel.application对象,通过excel打开文件,进行所有重新格式化,然后另存为临时电子表格。 使用Docmd.transferspreadsheet方法上传到表

有没有其他更好的方法将文本上传到MS Access?

最快的方法是什么?

用于传输文本文件的内置命令将是最快的。

但是,如果需要增加灵活性,那么线路输入将是下一个最佳(也是下一个最快(。

启动和自动化整个Excel副本非常繁重。但是,公平地说,一旦加载,那么速度就可以了。

问题不在于加载速度,而在于重新格式化数据需要哪种代码。

如果你使用转文,那么它非常快。但是,如果您现在必须重新循环并重新处理该数据,那么您将再次交出数据。所以这里额外的时间不是导入速度,而是额外的处理。

行输入的优点是,您可以重新格式化,处理该行的处理,然后将其发送到表中。这意味着您只循环和触摸每行数据一次。

所以 transfertext 是最快的,但现在如果你必须重新循环并再次触摸每一行数据,那么你触摸数据两次。

因此,传输速度可能不是"中心"的真正目标,而是处理类型以及一旦抓取数据需要多少处理

。 行输入是唯一的方法,当您从文件中提取数据、处理数据,然后将其发送到表中时,该方法将接触每行数据一次。

所有其他方法都涉及读取整个数据集,然后处理数据 - 因此您可以再次接触数据。

感谢Albert D. Kallal。

只是在这里分享一些测试结果。我将508481记录上载到 Access 表中。

通过Line Input方法完成上传需要 14 分 30 秒。通过transfertext方法完成上传并通过 vba 代码重新格式化输出需要 3 分 12 秒。

docmd.transfertext方法比行输入快得多,即使它需要读取两次数据才能重新格式化输出。

我无法通过 docmd.transfertext 解决的唯一缺点是,如果源文件不包含任何明显的排序 ID 或排序逻辑,则 Access 表中的记录顺序无法与源文件中的记录顺序保持一致。

相关内容

最新更新