![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
1 или 2 млн. записей [D7]
Mister © (2004-07-16 22:32:00)Здраствуйте! хотелось бы знать, можно ли как-нибудь дописать в таблицу с 1,5 млн записей не дождавшись загрузки ее допустим в ADOTable, а то очень долго, к тому же сетка еще время отнимает... база Access 97
Johnmen (2004-08-04 00:14:00) [1]Понятно...
см. Vlad © (17.07.04 00:21) [3]
Жека (2004-08-04 00:07:00) [2]
Жека, ты хорошо понимаешь, ЧТО делает и КАК приведенный тобой кусок кода ?
Честно говоря не особо, но он работает и даже записывает данные из базы в файл (сейчас я работаю с базой менее 200000 записей)
Johnmen (2004-08-04 00:00:00) [3]Жека, ты хорошо понимаешь, ЧТО делает и КАК приведенный тобой кусок кода ?
Жека (2004-08-03 23:55:00) [4]У меня тоже возник вопрос. Есть база из 3900000 записей и мне нужно ее перегнать в формат для другой базы, но когда я начинаю использовать кверю, то память все равно кончается. Вот как я это делаю:
AssignFile(f, 'D:\Phones 2002\2.txt');
rewrite(f);
j:=0;g:=2;k:=0;
ADOQuery1.Active:=true;
i:=ADOQuery1.RecordCount;
//memo1.Text:=inttostr(i);
p:=0;
while not ADOQuery1.Eof do
begin
if j=50001 then Begin
j:=0;
g:=g+1;
s:='D:\Phones 2002\'+inttostr(g)+'.txt';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=
'Select * from base where id BETWEEN '+inttostr(p+1)+
' and '+inttostr(p+50050);
ADOQuery1.Open;
Closefile(f);
AssignFile(f,s);
rewrite(f);
end;
p:=p+1;
try
s1:=' %#%Phone$'+ADOQuery1.Fields[0].Value+'$';
writeln(f,s1);
except
writeln(f,' %#%Phone$ $');
end;
try
s1:='no_type$'+inttostr(ADOQuery1.Fields[1].Value)+'$';
writeln(f,s1);
except
writeln(f,'no_type$ $');
end;
try
s1:='Abonent$'+ADOQuery1.Fields[2].Value+'$';
writeln(f,s1);
except
writeln(f,'Abonent$ $');
end;
try
s1:='Address$'+ADOQuery1.Fields[3].Value+'$';
writeln(f,s1);
except
writeln(f,'Address$ $');
end;
try
s1:='Comments$'+ADOQuery1.Fields[4].Value+'$';
writeln(f,s1);
except
writeln(f,'Comments$ $');
end;
j:=j+1;k:=k+1;
ProgressBar1.Position := 100 * k div i;
ADOQuery1.Next;
end;
try Closefile(f) except end;
end;
Подскажите пожалуйта, как мне освобождать память при использовании кверя.
злючка (2004-07-19 00:20:00) [5]Удалено модератором
Примечание: Личная переписка
Mister (2004-07-18 20:09:00) [6]Vlad, спасибо!
Mister (2004-07-18 20:09:00) [7]Удалено модератором
Vlad (2004-07-17 00:21:00) [8]
> Mister (16.07.04 22:32)
Можно.
1)На то существует компонент ADOQuery, а так же SQL запросы insert ...
2) Существует понятие серверный курсор, при котором в датасет подгружаются не все данные сразу.
Sergey Masloff (2004-07-16 23:50:00) [9]Anatoly Podgoretsky © (16.07.04 22:42) [1]
>Вечером
Да она (ADOTable) еще в обед скажет что память кончилась ;-)
Anatoly Podgoretsky (2004-07-16 22:42:00) [10]Вечером