Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.11;
Скачать: CL | DM;

Вниз

Как ускорить обмен между двумя базами?   Найти похожие ветки 

 
pavel_guzhanov ©   (2008-06-03 20:01) [0]

Здравствуйте.
Мне нужно перегнать данные из базы Firebird в Access. Базы идентичны по структуре. Решил сделать в лоб. Сперва запрос в FireBird, потом в цикле по набору данных, занося их в Access. Для связи с FireBird использую IBDatabase и IBQuery, для связи с Access использую ADO. Выглядит примерно так:

ADOQuery.sql.Clear;
ADOQuery.SQL.Add("insert into Table 1 (Field1, field2, field3,...) values (:v1, :v2, :v3,...)");
IBQuery.SQL.Clear;
IBQuery1.SQL.Add("Select * from TABLE1");
IBQuery.Open;
IBQuery.First;
while not IBQuery.Eof do
begin
 ADOQuery.Parameters[0].value:=IBQuery.FieldByName("Field1").value;
ADOQuery.Parameters[1].value:=IBQuery.FieldByName("Field2").value;
ADOQuery.Parameters[2].value:=IBQuery.FieldByName("Field3").value;
...........
IBQuery.next;
end;


Это конечно работает, но очень медленно. Подскажите, как можно сделать то же (т.е. перенос данных), но чтобы работало быстрее?


 
Виталий Панасенко(дом)   (2008-06-03 21:27) [1]

А данных то сколько ?


 
Reindeer Moss Eater ©   (2008-06-03 21:29) [2]

Data Pump


 
Правильный_Вася   (2008-06-03 21:36) [3]


> ADOQuery.Parameters[0].value:=IBQuery.FieldByName("Field1").value;

запомнить выделенное в отдельные переменные, обращаться к ним
это блошки, конечно, но будет чуть быстрее
однако датапамп лучше

ps забудь про квери, используй датасет и комманд


 
pavel_guzhanov ©   (2008-06-04 08:11) [4]

А где почитать про DataPump?


> А данных то сколько ?


В самой большой таблице около миллиона, пара таблиц по 30-40 тысяч, остальные - мелочи.


 
Виталий Панасенко(дом)   (2008-06-04 08:48) [5]


> pavel_guzhanov ©   (04.06.08 08:11) [4]
>
> А где почитать про DataPump?
>
>
> > А данных то сколько ?
>
>
> В самой большой таблице около миллиона, пара таблиц по 30-
> 40 тысяч, остальные - мелочи.
>

но если в исходной БД сотни мегабайт инфы, то быстрее вряд-ли получиться.
+ сделать IBQuery однонаправленным


 
Sergey Masloff   (2008-06-05 11:54) [6]

pavel_guzhanov ©   (04.06.08 08:11) [4]
>А где почитать про DataPump?
Да он вместе с дельфой идет в поставке просто по умолчанию не ставится наверное. Хелп к нему тоже есть там все элементарно. Насчет скорости правда не уверен в существенном выигрыше.

попробуй в твоем варианте замени IBQuery на IBSQL, ParamByName на Params[]

Еще можно средствами акцесса делать импорт - через ODBC или из файлов



Страницы: 1 вся ветка

Текущий архив: 2009.01.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
2-1227701460
2B
2008-11-26 15:11
2009.01.11
Переделать код


2-1227711457
ekto
2008-11-26 17:57
2009.01.11
запрос


15-1226644981
Slider007
2008-11-14 09:43
2009.01.11
С днем рождения ! 14 ноября 2008 пятница


2-1227975034
Андрей (Начинающий)
2008-11-29 19:10
2009.01.11
Проблема со шрифтом.


1-1205408707
Xmen
2008-03-13 14:45
2009.01.11
правильное закрытие документа Excel