| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Реализация DataPump в Delphi |
| Автор: CKBeg 1.12.2006, 12:42 |
| Мастера написал на Delphi аналог DataPump. Но прога моя в разы в скорости отстает от DataPump. Причем именно при вставке скорость низкая. Пишу под BDE. Данные из Oracle в Paradox заливаю. Теперь вопрос как прога DataPump так быстро заливает? может быть он не через Table1.Insert вставляет? Если так, то где можно об этом почитать? p.s. Datapump- прога для перемещения данных из одной базы в другую. Поставляется вместе с Delphi |
| Автор: x77 4.12.2006, 14:44 |
| CKBeg, для быстрой вставки нужно использовать TQuery и вставлять непосредственно командой insert into. это во первых. во вторых, если для работы используется TDataSet либо его потомок - неплохо бы ему говорить DisableControls/EnableControls. |
| Автор: CKBeg 5.12.2006, 09:20 | ||||
Нет. Ты не правильно говоришь. Как раз таки для файловой БД(в нашем случае Paradox) не надо юзать SQL, для этого лучше Table1.Insert.
Да ты прав насчет этого, но у меня визулизация вставляемых записей не используется. Я так посмотрел может быть он(Datapump) юзает компонент TBatchMove с опцией Copy. А вообще где можно про это почитать? нет разницы на каком языке |
| Автор: x77 5.12.2006, 15:11 | ||
| потестить, увы, не вышло - через несколько секунд интенсивной вставки вылетает "Table is full". будет время - попробую на ноуте с базой на флешке, там, наверное, более наглядно будет.... что касается BatchMove, то почитать про него можно в исходниках ;) он, собственно, делает вот что:
функция dbiBatchMove, как раз, и выполняет все операции. с достаточной долей вероятности можно предположить, что она работает с таблицами напрямую... поскольку внутренний код BDE закрыт, остаётся только юзать уже готовую функцию так, как это сделано в TBatchMove (компонент описан в DbTables и ничего сверхьестественного из себя не представляет). |
| Автор: CKBeg 10.12.2006, 16:21 | ||
для этой ошибки я поставил в BDE настройках: Native->Paradox->BLOCK SIZE=64 ТЫС. С КОПЕЙКАМИ Полезная штука. Аж в разы увеличивается вместимость paradox'а. А вообще ты в какое время сидишь в нете, я по аське постучусь. Добавлено @ 16:22 да нет тестить не стоит, я и SQL'ом пробовал и Table1.Insert'ом тоже. Последняя в разы быстрее |