我需要在 MS Access 表中插入 800000 条记录。我正在使用 Delphi 2007 和TAdoXxxx
组件。该表包含一些整数字段、一个浮点字段和一个只有一个字符的文本字段。其中一个整数字段(不是 autoinc)有一个主键,另一个整数和浮点字段有两个索引。
使用插入数据AdoTable.AppendRecord(...)
需要> 10 分钟,这是不可接受的,因为每次用户开始使用带有程序的新数据库时都会这样做。我无法预填充表格,因为数据来自另一个数据库(无法通过 访问ADO
)。
tAdoCommand
通过将记录写入制表符分隔的文本文件并使用对象执行,我设法缩短到大约 1 分钟
insert into table (...) select * from [filename.txt] in "c:\somedir" "Text;HDR=Yes"
但我不喜欢这样的开销。
我认为必须有更好的方法。
编辑:
一些附加信息:
- 选择 MS Access 是因为它不需要在目标机器上进行任何额外的安装,并且整个数据库都包含在一个可以轻松复制的文件中。
- 这是一个单用户应用程序。
- 数据将仅插入一次,并且在数据库的生命周期内不会更改。但是,该表包含一个附加字段,该字段用作标志以指示另一个数据库中的相应记录已由用户处理。
- 一分钟是可以接受的(最多 3 分钟也可以),我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点。
- 插入数据后,表的性能相当不错。
- 当我开始计划/实现与 Access 数据库一起使用的程序功能时,不需要该表。直到后来,当客户要求另一个功能时,它才变得必要。(不总是这样吗?)
编辑:
从到目前为止我得到的所有答案来看,似乎我已经获得了将这么多数据插入 Access 表的最快方法。感谢大家,感谢您的帮助。