Пещера программиста
1Апр/102

Вставка большого количества записей в Firebird

Домучиваю потихоньку перенос КЛАДР в Firebird. Ну а для этого основная операция — вставка громадного числа записей.

Первоначально шел по пути обработки данных из dbf КЛАДРа на клиенте, и вставке их на сервер. Отключал индексы на таблице, вставлял по одной записи (т.е. не блок из нескольких), коммитил через 1000 вставок. Скрость работы  примерно минут 30-40 на 1000000 записей кладра.

Потом узнал о external table. Не сложной манипуляцией dbf файл адоптируется в нужный вид(обрезаем заголовок ), кидается на сервер. На сервере мы его подключаем как внешнюю таблицу и работаем с ним. Плюс написал хранимые процедуры для обработки данных и вставки их (то, что раньше делал на клиенте). Итог — не считая подготовления файлов (а оно занимает от силы не более минуты), этот же миллион записей загрузился за 3,5 минуты.

клиент в первом случае и сервер во втором это одна и таже машина.

Доволен как удав :-)

Комментарии (2) Пинги (0)
  1. Здравствуйте!

    У меня вопрос — а как Вы отключали индексы?

    Я вот пытался отключить через «ALTER INDEX IndexName ACTIVE/INACTIVE» но это не помогло, я так понимаю оно влияет только на чтение. Помогло только DROP Index.

    Спасибо.

  2. Приветсвую.

    Вообще ALTER INDEX должен помочь. Влияет оно и на чтение и на запись. При отключенном идексе чтение медленнее идет, при включенном запись. Надо проверять на конкретной версии firebird`а.

    конкретнее подсказать уже не смогу, т.к. ушел от firebird и delphi в сторону oracle. И походу не предвидится возвращение.


Оставить комментарий


Spam protection by WP Captcha-Free

Нет обратных ссылок на эту запись.