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

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

Что "лучше" использовать при выгрузке/загрузке данных из/в DBF [D6, DBF]


Страницы:   1 2

Slaga ©   (2005-11-30 12:22:00) 

У меня есть задание выгрузить пару табличек из Оракла в ДБФ и у меня вопрос что лучше использовать ADO или BDE, "лучше" это в смысле практичнее, скорость выполнения выгрузки и т.д.

Я реализовал это, пока, через ADO, но 1000 при этом скорость вставки 1000 записей (5 полей, 4 - integer, 1 - string (ФИО)) приблизительно 10 секунд, всего записей в таблице 300000...

долго...

может подскажите как ускорить процесс


slaga   (2005-12-01 10:41:00) [21]

тормозит именно OutQuery.ExecSQL, выборка проходит относительно быстро, фетч тоже быстро, даже перебор полей не сильно тормозит, а вот OutQuery.ExecSQL ...

может можно как то пакетно это делать, ну например комитить после каждой 1000, но я не нашел как это сделать :(


ANB   (2005-11-30 14:47:00) [22]


> slaga ©   (30.11.05 12:49) [5]

Во. Сообразил. Закоментируй OutQuery.ExecSQL; и померяй время снова.


ANB   (2005-11-30 14:46:00) [23]


>  Prepared;

А чего эта строка делает ?
Имхо - быстрее уже не напишешь без особых изгалов. Есть смысл промониторить скорость выборки из оракла, если там сложный запрос.


slaga   (2005-11-30 12:49:00) [24]

Посоветуйте "правильный" алгоритм, а я поучусь, я использую такой:

with OutQuery do
 begin
  SQL.Add('CREATE TABLE '+Versions.DirName+' ('+Versions.FieldList+')');
  ExecSQL;
  OutQuery.SQL.Clear;
  Close;
  SQL.Add('INSERT INTO '+Versions.DirName+' ('+Versions.FieldListNotType+')    VALUES ('+Versions.ParamList+')');
  Parameters.ParseSQL(OutQuery.SQL.Text, true);
  Prepared;
 end;


while not OraDataSet.Eof do
 begin
  for i := 0 to OraDataSet.FieldCount - 1 do
   OutQuery.Parameters[i].Value := OraDataSet.Fields[i].Value;
  OutQuery.ExecSQL;
  OraDataSet.Next;
 end;


Slaga   (2005-11-30 12:47:00) [25]

Ну мне желательно без использования не стандартных компонент


Vlad   (2005-11-30 12:35:00) [26]


> Slaga ©   (30.11.05 12:22)  


> что лучше использовать ADO или BDE

в смысле скорости - примерно одинаково. Возможно ADO чуть быстрее, но не на много.
Что касается твоего вопроса - то 10 сек. на 1000 записей это слишком много. Так, навскидку, при оптимальном алгоритме, должно быть 1-2 секунды максимум. Так что оптимизируй свой алгоритм или ищи другой. С ADO или BDE, не столь принципиально (imho)


Sergey13   (2005-11-30 12:28:00) [27]

Если интересно на http://oraclub.trecom.tomsk.su/в утилитах есть готовые.


alex_***   (2005-11-30 12:25:00) [28]

для ДБФ лучше пользовать компоненты прямого доступа. я пользовал TVKDBF


Страницы:   1 2

Наверх

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