Главная страница
    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
15-1226277137
Abcdef123
2008-11-10 03:32
2009.01.11
Верно ли это?


2-1227860921
atom321
2008-11-28 11:28
2009.01.11
челая часть числа


1-1205651887
Megatron
2008-03-16 10:18
2009.01.11
Hint в ComboBox


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


2-1227686798
Trinimak
2008-11-26 11:06
2009.01.11
data diagram





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский