小弟正在做一个数据库分发程序,将数据库的记录保存为文本文件
adoquery.sql.text:='select * from table1 order by FNum'
adoquery.open;
for i:=1 to 10 do
begin
cchange:=tstringlist.create;
for m:=1 to 3
begin
for j:=1 to 10000
if m=1 then
cchange.add(adoquery.fieldbyname('num1'))
else
cchange.string[j]:=cchange.string[j]+','+adoquery.fieldbyname('num1');
end;
cchange.savetofile('c:\'+inttostr(i)+'.txt);
cchange.free;
end;
开始的时候速度很快,但速度越来越慢,有什么办法可以提速呀,存储过程就不用了,代码算法求教。
可不可以,在SQL里面每次只提3*10000,然后关闭后,再打开数据库中下一个3*10000条记录,或者,先一次性的将数据库记录全转为文本文件,然后再对文本文件做分割。
adoquery.sql.text:='select * from table1 order by FNum'
adoquery.open;
for i:=1 to 10 do
begin
cchange:=tstringlist.create;
for m:=1 to 3
begin
for j:=1 to 10000
if m=1 then
cchange.add(adoquery.fieldbyname('num1'))
else
cchange.string[j]:=cchange.string[j]+','+adoquery.fieldbyname('num1');
end;
cchange.savetofile('c:\'+inttostr(i)+'.txt);
cchange.free;
end;
开始的时候速度很快,但速度越来越慢,有什么办法可以提速呀,存储过程就不用了,代码算法求教。
可不可以,在SQL里面每次只提3*10000,然后关闭后,再打开数据库中下一个3*10000条记录,或者,先一次性的将数据库记录全转为文本文件,然后再对文本文件做分割。
begin
ADOConnection1.Execute(
'SELECT * INTO [myTable.txt] IN "C:\path" "Text;" FROM table1 ORDER BY FNum');
end;説明:先用「TADOConnection」控件連接好数据库、再修正"C:\path"為実際路径。