把约20,000条paradox表中的数据转换到Access2000数据库中的问题(100分)

  • 主题发起人 主题发起人 yihui
  • 开始时间 开始时间
Y

yihui

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Paradox表中有约20,000条数据,由于需要,要把其中所有记录
的某些字段转换到Access2000中,代码如下

begin
....
tblSource.First; //tblSource为Paradox

tblTarget.close; //tblTarget为Access
tblTarget.TableName:='Frame';
tblTarget.EmptyTable;
tblTarget.Open;

while not tblSource.Eof do
begin
Jn:=tblSource.fieldbyname('JmNo').Asinteger;
..........
Me:=tblSource.fieldbyname('Memo').Asstring;

tblTarget.AppendRecord([Jn,Fr,Pt,Us,Cn,Me]);

tblSource.Next;
end;

tblTarget.Close;
...
end;

程序执行时更新到3000条左右时就逐渐变慢,最后死掉...

后将TblTarget.CacheUpdate模式改为True,并调用ApplyUpdates

执行结果一样是在25%左右时停止响应.

我用另一个有3000条数据的paradox试验,发现执行结果很好.

请各位高手指点.thanks!


 
打开的 数据缓冲区 越来越大. 内存 等 资源 越来越小.

最后 ..... 累S

你为什么 不用 Batchmove ?
 
一定要用代码如何解决?
 
建议用ado实现,ado有异步执行功能,可能会改善大数据量转换的性能。

你可以一试!
 
你改用Query控件,通过insert语句试试,应该没问题。
 
同意dopro.
我写的一个程序中经常会有数据转换,用SQL后台写数据,没出现过死机的现象,最多时
有将近200000条记录转换,再多我也不知道了,呵呵
 
谢谢各位,以上的办法我再试试,但我真的想知道有没有用Ttable解决的好办法。
有知道的再帮帮忙吧。
thanks.
 
To jswqg:
吴其刚
我已经知道是你了,刚才给你发了mail。
你老兄知道可不要宁啬阿。

 
同意dopro.
table是把数据全打开在运行当然累死了,用query吧,一条一条的写。
 
用QUERY吧!
先在ACCESS中连接你的PARADOX文件,再用SQL语句进行INSERT
WITH QUERY1 DO
EGIN
CLOSE;
SQL.CLEARE;
SQL.ADD('INESRT INTO ACCESS表 select paradox表');
sql.excesql;
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
953
SUNSTONE的Delphi笔记
S
后退
顶部