急!大虾们帮帮忙,关于插入大量数据出错的问题(50分)

  • 主题发起人 主题发起人 devecom
  • 开始时间 开始时间
D

devecom

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,救救我:

我碰到了一个这样的问题:
在SQL Server里有一个表,有5XXX条记录,现在我要把它导出到一个DBF表中,因为我还
要对数据进行检查,所以不能用BatchMove,我是这样做的:
用一个ADOQuery和SQL Server连接,用Query对本地DBF连接,然后打开ADOQuery,循环
插入到dbf中,没次到大概3000多条(不能确定)的时候就会报这样的错:
Insufficient memory for this operation.Alias.

我的代码大概是这样的 :
with ADOQuery1 do
begin
close;
sql.clear;
sq.add('select * from table1');
open;
end;
ADOQuery1.first;
while not ADOQuery1.eof do
begin
with Query1 do
begin
close;
sql.clear;
sql.add('insert'); //从ADOQuery 中取出值,然后插入到Query中,中间还有
//值的计算和判断
execsql;
end;
ADOQuery1.next;
end;

当到3XXX条是就会出错. 你们一定要帮帮我,我很菜不知怎么办,死定了.
 
大家帮帮我吧
 
怎么没人回答吗?
 
根据某个条件将数据分批进行处理。如select * from table1 where id<3000等.
 
如果你只是
到3xxx出错。我估计是数据兼容的问题。
至少是其中的一个字段的2个库不兼容。你查一下吧。
例如,一个是char(50),一个是char(30).
 
To: Wind_cloudy
但这个ID是哪来的呢?不会要我更改表结构吧,表结构是不能更改的
 
To TBase:

不是数据兼容的问题,因为出错不是固定在某一条记录上,并且我用DBF的库结构是我
用Delphi的Datapump生成的
 
id只是举个例子,你难道找不到某个字段能够对数据进行划分吗?
如果有布尔型,不就可一分为二吗?如果有数值型,有数值大小划分。
如果有char型,可以根据其第一个字母进行划分。。。,你应该根据你的表结构和数据
找到一个比较好的划分方案.
 
老兄,你的错误是因为占用资源太多,原因可能是你把CACHEUPDATE开起来,关掉看看
 
我改用table之后就好了.谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
665
import
I
I
回复
0
查看
645
import
I
后退
顶部