使用Adotable.AppendRecord(…)插入数据需要> 10分钟是不可接受的,因为每次用户开始在程序中使用新数据库时都会这样做.我无法预填表,因为数据来自另一个数据库(无法通过ADO访问).
通过将记录写入制表符分隔的文本文件并使用tAdoCommand对象执行,我设法将时间缩短到大约1分钟
insert into table (...) select * from [filename.txt] in "c:\somedir" "Text;HDR=Yes"
但我不喜欢这个的开销.
我想,必须有更好的方法.
编辑:
一些其他信息:
>选择MS Access是因为它不需要在目标计算机上进行任何其他安装,并且整个数据库包含在一个可以轻松复制的文件中.
>这是一个单用户应用程序.
>数据只会插入一次,并且在数据库的生命周期内不会更改.但是,该表包含一个附加字段,该字段用作标志以指示用户已处理另一个数据库中的相应记录.
>一分钟是可以接受的(最多3分钟也可以)并且我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点.
>插入数据后,表的性能非常好.
>当我开始计划/实现使用Access数据库的程序的功能时,不需要该表.只有在客户要求另一个功能时才需要它. (情况不总是这样吗?)
编辑:
从我到目前为止得到的所有答案来看,似乎我已经有了将这么多数据插入Access表的最快方法.感谢大家,感谢您的帮助.
解决方法 您的基于文本的解决方案似乎是最快的,但如果您可以获得接近最终版本的预分配MS Access,则可以更快地获得它.您可以通过填充典型的用户数据库,关闭应用程序(以便刷新缓冲区)并手动删除该大表的所有记录来完成此 *** 作 – 但不能缩小/压缩它.因此,使用该文件来启动实际填充 – Access不会请求任何(或极少)额外的磁盘空间.不要记得,如果MS Access有办法自动化这个,但它可以帮助很多……
总结以上是内存溢出为你收集整理的delphi – 如何在MS Access表中插入800000条记录?全部内容,希望文章能够帮你解决delphi – 如何在MS Access表中插入800000条记录?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)