Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1227780469
NS1989
2008-11-27 13:07
2009.01.11
TFileStream


2-1227685751
AIK
2008-11-26 10:49
2009.01.11
Случайное число без повторов


15-1226944537
Kerk
2008-11-17 20:55
2009.01.11
Apache + Nginx


15-1226924798
@!!ex
2008-11-17 15:26
2009.01.11
Что это за музыка?


15-1226495684
Ros (r01)
2008-11-12 16:14
2009.01.11
Как получить индекс типа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский