Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Вечером


Наверх

Титульная страница Поиск, карта сайта Написать письмо