急急急,关于ADOQuery添加大于20000条数据速度太慢的问题。(200)

  • 主题发起人 jiansheyou
  • 开始时间
J

jiansheyou

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我的程序如下:for j:=0 to 50000 dobegin Qry1.Append; Qry1.FieldByName('A').String := S1; .... ... Qry.Post;end; 但是在写入万条以上的大数据时太慢了,要几分钟,甚至到了近10分钟。 请教有什么办法能够快速的写入50000条数据到Oracle数据库中,所有时间大概在1分中左右能接受。 另外,我感觉写入速度慢,是由于for循环中每次都Post的缘故,有没有ADOQuery批量写入的例子,比如,就是在本地写好1000条数据,一次提交给Oracle服务器,这样能提高写入速度吗?
 
Q

QQ在线

Unregistered / Unconfirmed
GUEST, unregistred user!
oracle用sqlldr外部导入工具,20W条不到10秒钟左右
 
Y

yuxiaoxue

Unregistered / Unconfirmed
GUEST, unregistred user!
在循环写数据前Qry1.DisableControls写完后Qry1.EnableControls上述办法只对Qry1连接有数据感知控件有效
 
Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
不用append和post的方法,用參數,或是直接生成sql語句來實現,速度應該能快一些。
 
S

Supermay

Unregistered / Unconfirmed
GUEST, unregistred user!
用cacheupdate
 
C

clwlyc

Unregistered / Unconfirmed
GUEST, unregistred user!
1、用Insert into语句,速度会快很多2、可以用TClientDataSet,全部新增完成再一次性更新到数据库中
 
X

xianjun

Unregistered / Unconfirmed
GUEST, unregistred user!
建议用Direct Oracle Access等使用OCI的组件,可以使用批量插入的功能50000条记录应该十秒内能插入完成。
 
N

nqsdlsh

Unregistered / Unconfirmed
GUEST, unregistred user!
clwlyc的方法应该可行,实现了一次性批量写入
 
A

aoyun0809@126.c

Unregistered / Unconfirmed
GUEST, unregistred user!
如果是初始数据的话可以数据库操作导入,几十秒完成。
 
Y

yf168

Unregistered / Unconfirmed
GUEST, unregistred user!
1、adoquery有个批量设置,好像是LockType : Batchupdate,具体你查查,速度会快N倍。2、加上yuxiaoxue说的。
 
J

jiansheyou

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
931
SUNSTONE的Delphi笔记
S
S
回复
0
查看
755
SUNSTONE的Delphi笔记
S
顶部