从大数据量文本文件中(10万条记录以上)读数据,插入ACCESS数据库表中,如何提高速度?

时间:2021-11-02 23:21:43
从大数据量文本文件中(10万条记录以上)读数据,文本文件中每行的长度是固定的,插入ACCESS数据库表,我采取的方式是按照规定好的格式逐条从文本文件中读取记录,截取文本记录使用ADOQUERY控件调用SQL语句插入表中不同的字段,但是这种方式在数据量很大,机器性能不是很好时,速度非常慢,大家帮忙提个建议不知采用什么方式能够提高速度这种读取数据插入数据库的方式,谢谢!

18 个解决方案

#1


用批更新可以吗?比如1000条插一次;

#2


在Form上放一个ADOConnection,连结指向目标Access库
比如txt文件在c:\temp\aaaa.txt
就执行
ADOConnection.Connected := True;
ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');

#3


先把数据库里的索引删了,再插入速度会快点

#4


to:WWWWA(aaaa) 
您说的方法我试过了,不过运行到ADOCONNECTION.execute()的时候报错提示
‘could not find file 'c:\programfiles\borland\delhi5\projects\text'不知为何?

#5


你的那个文本不在工程目录下

#6


少个扩展名嘛
如果你这文本格式式ADO 不认识的话。。。
就用文件操作吧

#7


通过动态产生SQL语句来更新,每次更新一定数量例如100条!
直接独入牵扯到字段对应问题

#8


那么怎样动态产生SQL语句每次更新100条数据呢,还请指教,谢谢

#9


采用多线程 一个线程从文本文件读各个字段的数据 一个线程负责向数据库插入各字段 共享一些变量 如数组等

#10


帮你顶一下
我只会瞎说

#11


动态产生SQL语句每次更新一定量数据的方法该怎样做呢还请指教,谢谢

#12


我也在寻求这个问题的解决方法,同命相连,帮你顶顶。

线索:我用sql语句执行,效率提高了一倍多,但数据量大,机器配置地肯定是最致命的问题。
如果这样,给你一个建议,可能对你有帮助:一旦需要处理这样的大数据量任务时,停止其它任务,显示进度条,给用户一种比较直观的处理数据的感觉,否则硬盘不停的转,屏幕什么反映都没有,用户会认为死机。另外,处理这种数据的时机尽量要放在系统不太忙的时候,如退出系统前。好,希望对你有帮助,如果解决了,给个消息!

#13


我顶住

#14


还是没有找到好的办法,我在更新数据库时已经加入进度条显示了,但是几十万条数据,4-5小时的插数据操作让人很难接受呀。

#15


还是没有解决呢,大家再来想想办法,给提个好的建议吧,谢谢。

#16


怎么会要这么长时间啊,我40多万条纪录做了没超过2分钟啊

#17


如果不想编程,那么使用SQL Server中的DTS,
如果想编程,那么使用Bulk Copy命令,具体使用方法参考SQL Server的联机帮助!

#18


那到底怎样使用ADOQUERY的SQL命令方式提高从文本记录读出数据插库的速度呢

#1


用批更新可以吗?比如1000条插一次;

#2


在Form上放一个ADOConnection,连结指向目标Access库
比如txt文件在c:\temp\aaaa.txt
就执行
ADOConnection.Connected := True;
ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');

#3


先把数据库里的索引删了,再插入速度会快点

#4


to:WWWWA(aaaa) 
您说的方法我试过了,不过运行到ADOCONNECTION.execute()的时候报错提示
‘could not find file 'c:\programfiles\borland\delhi5\projects\text'不知为何?

#5


你的那个文本不在工程目录下

#6


少个扩展名嘛
如果你这文本格式式ADO 不认识的话。。。
就用文件操作吧

#7


通过动态产生SQL语句来更新,每次更新一定数量例如100条!
直接独入牵扯到字段对应问题

#8


那么怎样动态产生SQL语句每次更新100条数据呢,还请指教,谢谢

#9


采用多线程 一个线程从文本文件读各个字段的数据 一个线程负责向数据库插入各字段 共享一些变量 如数组等

#10


帮你顶一下
我只会瞎说

#11


动态产生SQL语句每次更新一定量数据的方法该怎样做呢还请指教,谢谢

#12


我也在寻求这个问题的解决方法,同命相连,帮你顶顶。

线索:我用sql语句执行,效率提高了一倍多,但数据量大,机器配置地肯定是最致命的问题。
如果这样,给你一个建议,可能对你有帮助:一旦需要处理这样的大数据量任务时,停止其它任务,显示进度条,给用户一种比较直观的处理数据的感觉,否则硬盘不停的转,屏幕什么反映都没有,用户会认为死机。另外,处理这种数据的时机尽量要放在系统不太忙的时候,如退出系统前。好,希望对你有帮助,如果解决了,给个消息!

#13


我顶住

#14


还是没有找到好的办法,我在更新数据库时已经加入进度条显示了,但是几十万条数据,4-5小时的插数据操作让人很难接受呀。

#15


还是没有解决呢,大家再来想想办法,给提个好的建议吧,谢谢。

#16


怎么会要这么长时间啊,我40多万条纪录做了没超过2分钟啊

#17


如果不想编程,那么使用SQL Server中的DTS,
如果想编程,那么使用Bulk Copy命令,具体使用方法参考SQL Server的联机帮助!

#18


那到底怎样使用ADOQUERY的SQL命令方式提高从文本记录读出数据插库的速度呢