当前位置:  开发笔记 > 编程语言 > 正文

如何将800000记录插入MS Access表?

如何解决《如何将800000记录插入MSAccess表?》经验,为你挑选了2个好方法。

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

使用AdoTable.AppendRecord(...)> 10分钟插入数据是不可接受的,因为每次用户开始在程序中使用新数据库时都会这样做.我无法预先填充表格,因为数据来自另一个数据库(无法访问ADO).

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

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

但我不喜欢这个的开销.

我想,必须有更好的方法.

编辑:

一些其他信息:

选择MS Access是因为它不需要在目标机器上进行任何额外安装,并且整个数据库包含在一个可以轻松复制的文件中.

这是一个单用户应用程序.

数据只会插入一次,并且在数据库的生命周期内不会更改.但是,该表包含一个附加字段,该字段用作标志以指示用户已处理另一个数据库中的相应记录.

一分钟可以接受的(最多3分钟也是如此)并且我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点.

插入数据后,表的性能非常好.

当我开始计划/实现使用Access数据库的程序的功能时,不需要该表.只有在客户要求另一个功能时才需要它.(情况并非如此吗?)

编辑:

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



1> JosephStyons..:

既然你已经说过800K记录数据在数据库的生命周期内不会改变,我建议将它作为一个表链接到文本文件,并完全跳过插入.

如果您坚持将其拉入数据库,那么1分钟内的800,000条记录将超过13,000 /秒.我不认为你会在MS Access中击败它.

如果您希望它对用户更具响应性,那么您可能需要考虑加载一些最小数据集,并设置后台线程以在其工作时加载其余数据.



2> Fionnuala..:

没有索引会更快.你可以在导入后添加它们吗?

在这个线程Slow MSAccess磁盘写入中可能有许多建议

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有