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...

долго...

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


ANB   (2005-12-02 12:42:00) [1]


> Anatoly Podgoretsky ©   (02.12.05 12:31) [27]

Да хрен с ним. Мне тоже пока не надо. Спецификация у меня у самого дома есть. А есть ли этот код окончания - можно прямо в DBF глянуть, сгенеренную стандартными средствами. Впрочем, он может быть не во всех форматах.


Anatoly Podgoretsky   (2005-12-02 12:31:00) [2]

Говорю нет под рукой спецификации, только дома, но настаиваю на признаке окончания и его коде 1А
Если очень интересует, то могу дома посмотреть.


ANB   (2005-12-02 12:25:00) [3]


> Anatoly Podgoretsky ©   (02.12.05 12:12) [25]

Первую часть (собственно заголовок) лучше всего в рекорд запихать и не парится.
Признака конца там не было (FoxPro и Clipper). Там все на смещениях построено и вычисляется.


Anatoly Podgoretsky   (2005-12-02 12:12:00) [4]

ANB ©   (02.12.05 09:34) [24]
Пункты 1 и 2 это заголовок, конечно он состоит из двух частей, при том вторую можно реализовать динамическим массивом, а первую статическим.
Где то есть признак конца, вроде бы во втором заголовке - код 1А
Мне просто лень открывать спецификацию, поскольку нет практической задачи. А вот когда буду писать, то спецификация будет под ругой и код будет делаться в строгом соответствии с ней.


ANB   (2005-12-02 09:34:00) [5]


> Anatoly Podgoretsky ©   (01.12.05 21:30) [22]

Нету там признака конца файла.
Но я бы сделал следующие этапы :
1. Запись заголовка
2. Запись описания полей
3. Запись данных
Т.к. на данных самые тормоза - то их лучше одной командой записать.
Если таблица создана заранее, то первые 2 пункта нужно заменить на чтение заголовка и описания полей.


Anatoly Podgoretsky   (2005-12-01 21:31:00) [6]

ANB ©   (01.12.05 17:23) [21]
Два дня и 7 часов на изучение формата и час на написание.


Anatoly Podgoretsky   (2005-12-01 21:30:00) [7]

Первой командой записывается буфер с заголовком
Второй командой записывается буфер с данными (динамический массив)
Третей командой записывается признак конца файла, не помню есть ли по формату.
Для записи удобен TFileStream


ANB   (2005-12-01 17:23:00) [8]


> alex_*** ©   (01.12.05 17:13) [19]

Угу. Я еще прошлый год написал - сильно приперло, а взять негде было. Пришлось 3 дня убить. Правда, все равно делать нечего было.


Slaga   (2005-12-01 17:17:00) [9]


> Anatoly Podgoretsky ©   (01.12.05 16:07) [17]


А можно поподробнее на тему " двумя.тремя командами записи быстро все сбросить на диск", пожалуйста.


alex_***   (2005-12-01 17:13:00) [10]

вы сурсами для записи в DBF обмениваетесь чтоль? Велосипед изобретаете?


ANB   (2005-12-01 17:07:00) [11]


> Anatoly Podgoretsky ©   (01.12.05 16:07) [17]

Это если напрямую в файл ? Так пусть переколбасит, как ему надо. У меня все равно только чтение. Главное - идея.


> slaga ©   (01.12.05 15:53) [16]

Ща отправлю. Только дописывать все равно самому придется.


Anatoly Podgoretsky   (2005-12-01 16:07:00) [12]

ANB ©   (01.12.05 14:41) [15]
А я бы посоветовал делать запись в динамический массив, и уж потом двумя.тремя командами записи быстро все сбросить на диск. Можно весьма кардинально повысить скорость, конечно при правильном написании.


slaga   (2005-12-01 15:53:00) [13]


> ANB ©   (01.12.05 14:41) [15]


Нет индексов нет, а на исходник с удовольствием посмотрю.


ANB   (2005-12-01 14:41:00) [14]


> slaga ©   (01.12.05 12:28) [14]

Значится так. При работе с LocalSQL тормоза неизбежны :
1. Запрос нужно парсить
2. Выполнение идет через не сильно короткую цепочку процедур/драйверов

Кстати, DBF какого формата ? Нет ли к ним индексов ? (FoxPro любит прописывать индексы прямо в таблицу и провайдеры, ессно, эти индексы автоматом цепляют. А с индексами вставка идет в разы медленнее).

Если индексов нету - тогда надо переходить на прямую запись в файл DBF. Благо она не сложно пишется.

ЗЫ. Коллега написал хреновато, посему могу предложить свой исходник.


slaga   (2005-12-01 12:28:00) [15]

Про "гетерогенные запросы" я не слышал ... надо почитать.

А что такое  "DataPump" ?

to Sergey13 Ну готовые утилиты мне точно не подходят :)


slaga   (2005-12-01 12:28:00) [16]

Про "гетерогенные запросы" я не слышал ... надо почитать.

А что такое  "DataPump" ?


Vlad   (2005-12-01 11:40:00) [17]


> slaga ©   (01.12.05 10:41) [8]

а ты не пробовал использовать гетерогенные запросы?
Я правда не знаю возможности ADO в этом смысле, но в BDE это точно есть.
Т.е. возможно перекачать данные одним SQL запросом


Виталий Панасенко   (2005-12-01 11:21:00) [18]

А чем DataPump НЕ устраивает ? Уже ничего изобретать не нужно...


Sergey13   (2005-12-01 10:49:00) [19]

2[4] Slaga ©   (30.11.05 12:47)
>Ну мне желательно без использования не стандартных компонент
Если это был ответ мне на [2], то там не компоненты, а утилиты готовые.


ANB   (2005-12-01 10:46:00) [20]


> slaga ©   (01.12.05 10:41) [8]

DBF все равно транзакции напрямую не поддерживает, так что это - изгал, смысла нету. Можно попробовать писать в файл напрямую. У меня есть модуль (без вставок строк) и тут еще один коллега с  форума его доделывал - грит вставку сделал, но я еще не смотрел, как. Могу дать пока свой - сам дорисуешь.


Страницы:   1 2

Наверх

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