gpt4 book ai didi

delphi - 如何将 800000 条记录插入 MS Access 表中?

转载 作者:行者123 更新时间:2023-12-03 15:15:02 27 4
gpt4 key购买 nike

我需要将 800000 条记录插入 MS Access 表中。我正在使用 Delphi 2007 和 TAdoXxxx成分。该表包含一些整数字段、一个浮点字段和一个仅包含一个字符的文本字段。其中一个整数字段(不是 autoinc)有一个主键,另一个整数和浮点字段有两个索引。

使用 AdoTable.AppendRecord(...) 插入数据需要 > 10 分钟,这是 Not Acceptable ,因为每次用户开始在程序中使用新数据库时都会执行此操作。我无法预填充该表,因为数据来自另一个数据库(无法通过 ADO Access )。

通过将记录写入制表符分隔的文本文件并使用tAdoCommand,我设法将时间缩短到大约1分钟。要执行的对象

insert into table (...) select * from [filename.txt] in "c:\somedir" "Text;HDR=Yes"

但我不喜欢这样做的开销。

我认为一定有更好的方法。

编辑:

一些附加信息:

  • 选择 MS Access 是因为它不需要在目标计算机上进行任何额外安装,并且整个数据库包含在一个可以轻松复制的文件中。
  • 这是一个单用户应用程序。
  • 数据只会插入一次,并且在数据库的生命周期内不会更改。不过,该表包含一个附加字段,该字段用作标志,以指示用户已处理另一个数据库中的相应记录。
  • 一分钟是可以接受的(最多 3 分钟也可以),我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点。
  • 插入数据后,表的性能非常好。
  • 当我开始规划/实现使用 Access 数据库的程序功能时,不需要该表。后来当客户要求另一个功能时,它才变得必要。 (情况不总是如此吗?)

编辑:

从到目前为止我得到的所有答案来看,我似乎已经找到了将这么多数据插入 Access 表的最快方法。谢谢大家,非常感谢你们的帮助。

最佳答案

既然您说过 800K 记录数据在数据库的生命周期内不会改变,我建议将文本文件作为表格链接,并完全跳过插入。

如果硬要拉入数据库的话,1分钟80万条记录,就超过13000条/秒了。我认为您无法在 MS Access 中击败它。

如果您希望它对用户的响应速度更快,那么您可能需要考虑加载一些最小的数据集,并设置一个后台线程来在它们工作时加载其余数据。

关于delphi - 如何将 800000 条记录插入 MS Access 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com