![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что "лучше" использовать при выгрузке/загрузке данных из/в DBF [D6, DBF]
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