![]() |
|
|
![]()
|
|
| CKBeg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.9.2006 Репутация: нет Всего: нет |
Мастера написал на Delphi аналог DataPump. Но прога моя в разы в скорости отстает от DataPump.
Причем именно при вставке скорость низкая. Пишу под BDE. Данные из Oracle в Paradox заливаю. Теперь вопрос как прога DataPump так быстро заливает? может быть он не через Table1.Insert вставляет? Если так, то где можно об этом почитать? p.s. Datapump- прога для перемещения данных из одной базы в другую. Поставляется вместе с Delphi |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
CKBeg, для быстрой вставки нужно использовать TQuery и вставлять непосредственно командой insert into. это во первых. во вторых, если для работы используется TDataSet либо его потомок - неплохо бы ему говорить DisableControls/EnableControls.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| CKBeg |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.9.2006 Репутация: нет Всего: нет |
Нет. Ты не правильно говоришь. Как раз таки для файловой БД(в нашем случае Paradox) не надо юзать SQL, для этого лучше Table1.Insert.
Да ты прав насчет этого, но у меня визулизация вставляемых записей не используется. Я так посмотрел может быть он(Datapump) юзает компонент TBatchMove с опцией Copy. А вообще где можно про это почитать? нет разницы на каком языке |
||||
|
|||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
потестить, увы, не вышло - через несколько секунд интенсивной вставки вылетает "Table is full". будет время - попробую на ноуте с базой на флешке, там, наверное, более наглядно будет....
что касается BatchMove, то почитать про него можно в исходниках ;) он, собственно, делает вот что:
функция dbiBatchMove, как раз, и выполняет все операции. с достаточной долей вероятности можно предположить, что она работает с таблицами напрямую... поскольку внутренний код BDE закрыт, остаётся только юзать уже готовую функцию так, как это сделано в TBatchMove (компонент описан в DbTables и ничего сверхьестественного из себя не представляет). -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| CKBeg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.9.2006 Репутация: нет Всего: нет |
для этой ошибки я поставил в BDE настройках: Native->Paradox->BLOCK SIZE=64 ТЫС. С КОПЕЙКАМИ Полезная штука. Аж в разы увеличивается вместимость paradox'а. А вообще ты в какое время сидишь в нете, я по аське постучусь. Добавлено @ 16:22 да нет тестить не стоит, я и SQL'ом пробовал и Table1.Insert'ом тоже. Последняя в разы быстрее |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |