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

Вниз

Как синхронизировать данные в разных БД?   Найти похожие ветки 

 
deras   (2009-03-31 11:28) [0]

Есть БД MaxDB. В ней (для упрощения) есть одна таблица. Данные в этой БД каждый день пополняются пользователями.
Есть вторая БД (FB2.0). В ней есть такая же по структуре таблица, как и в первой БД. Но данные в нее должны попадать из первой БД, скажем, раз в день.
Вопрос. Подскажите техническую процедуру переноса данных из первой БД во вторую. Проще говоря - каков механизм синхронизации?
Спасибо.


 
Правильный$Вася   (2009-03-31 11:53) [1]

первичные ключи
+ гуглить по слову "репликация данных"


 
MsGuns ©   (2009-03-31 12:05) [2]

Похоже, что репликация здесь не при чем - решается заливкой с помощью гетерогенного запроса или простой программки.


 
deras   (2009-03-31 12:36) [3]


> MsGuns ©   (31.03.09 12:05) [2]

вот-вот... думаю, это подошло бы мне.. Осталось узнать что такое гетерогенный запрос. Как я понимаю, это запрос к разным базам?
Если можно, подскажите сам механизм заливки
Спасибо


 
Ega23 ©   (2009-03-31 12:45) [4]


> Как я понимаю, это запрос к разным базам?


Я думаю, что гугл очень быстро даст тебе ответ на этот вопрос. Быстрее, чем я вот это вот сейчас набираю.


 
Sergey13 ©   (2009-03-31 13:35) [5]

> [0] deras   (31.03.09 11:28)
> Проще говоря - каков механизм синхронизации?

Какой тебе надо, такой и будет.
В общем случае открыть источник и скопировать в приемник. Можно сразу, можно поочереди с сохранением промежуточного результата.


 
deras   (2009-03-31 14:30) [6]


> В общем случае открыть источник и скопировать в приемник.


как при этом проверять задвоение записей?

Ну вот например:
если б были таблицы одной базы, скрипт бы был приблизительно такой
insert into t2 from (select * from t1 where t1.id not in (select id from t2))

а как обращаться к таблицам разных бд?


 
Ega23 ©   (2009-03-31 14:31) [7]


> а как обращаться к таблицам разных бд?


т.е. гугл и хелп ты так и не читал?


 
deras   (2009-03-31 14:35) [8]


> т.е. гугл и хелп ты так и не читал?


:-) читал.. чтение гугла не помогло мне понять как  решить проблемку


 
Sergey13 ©   (2009-03-31 14:39) [9]

> [6] deras   (31.03.09 14:30)
> как при этом проверять задвоение записей?

А как ты определяешь, что задвоение?

> а как обращаться к таблицам разных бд?

Самое простое и понятное - также как и к одной, но в двух экземплярах. 8-)


 
Ega23 ©   (2009-03-31 14:54) [10]


> чтение гугла не помогло мне понять как  решить проблемку


А чтение хелпа?


 
Anatoly Podgoretsky ©   (2009-03-31 15:05) [11]

А они однотипны по типам?
А гетерогенные запросы поддержаны,
А тригеры или автообновляемые поля есть? В MS SQL поле типа TimeStamp.


 
deras   (2009-03-31 15:48) [12]


> А как ты определяешь, что задвоение?

например так для таблиц одной БД
insert into t2 from (select * from t1 where t1.id not in (select id from t2))


> А чтение хелпа?

тоже не очень... :-(


 
deras   (2009-03-31 16:23) [13]


> А они однотипны по типам?

да


> А гетерогенные запросы поддержаны,

не уверен... вернее - не знаю как определить - поддерживаются или нет


 
deras   (2009-03-31 17:16) [14]

Разрешите объяснить как я пробую делать:
1) MaxDB <- TADOConnectio  <- TADODataSet
2) FB2.0 <- TFIBDatabase <- TFIBDataSet  

Как написать запрос и в главное - в каком датасете, чтоб выбрать записи из MaxDB и вставить в FB2.0?


 
Ega23 ©   (2009-03-31 20:32) [15]

Ясно. Хелп всё-таки не читал, но зачем-то соврал, что читал.


 
Сергей М. ©   (2009-03-31 20:45) [16]


> задвоение записей


Что ж не "затроение" ? Или не "застопятидесятирение" ?
Что, фразу "дублирование или повтор записей" уже и выговорить не в состоянии ?


 
YurikGL ©   (2009-03-31 20:55) [17]


> Разрешите объяснить как я пробую делать:
> 1) MaxDB <- TADOConnectio  <- TADODataSet
> 2) FB2.0 <- TFIBDatabase <- TFIBDataSet  
>
> Как написать запрос и в главное - в каком датасете, чтоб
> выбрать записи из MaxDB и вставить в FB2.0?
>

1) Выбираем данные из первой базы SQL-запросом (синтаксис select-а ищем в гугле) и устанавливаем курсор на первую запись.
2) Берем текущую запись получившегося набора данных.
3) Проверяем есть ли такая запись во второй базе (по первичному ключу). Если есть, то вставляем ее в базу SQL-запросом (синтаксис insert-а ищем в гугле)
4) Для набора данных из базы 1 делаем next
5) Если у набора данных не eof то идти на на пункт 2

Все это правда если перенести нужно одну таблицу. Если несколько, то эти действия делаются по очереди для нескольких таблиц. Причем сначала обрабатывать нужно справочники.
Если известно, что ключ автоинкрементарный, то первый датасет лучше отсортировать по первичному ключу в обратном порядке и вставлять до тех пор, пока не доберешься до записи, которая уже есть (или до конца датасета).

Ну есть еще всякие тонкости-полезности...

Теперь, если у тебя возникли проблемы, то скажи, с каким из 5-ти пунктов алгоритма.


 
deras   (2009-03-31 22:09) [18]

Очень был приятно удивлен ответом

> YurikGL ©   (31.03.09 20:55) [17]

...все стало на свои места. Никаких вопросов больше нет.
Очень Вам благодарен, YurikGL!!!

Еще благодарен за ответы MsGuns ©, Sergey13.

А вот Ega23 и Сергей М. какие-то злые сегодня.

Удачи всем!



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

Форум: "Начинающим";
Текущий архив: 2009.05.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1237987387
J.S.
2009-03-25 16:23
2009.05.10
принадлежит ли значение набору


2-1238076122
DevilDevil
2009-03-26 17:02
2009.05.10
Глупый вопрос. Путь к bpl.


8-1194095872
Andruha25
2007-11-03 16:17
2009.05.10
DirectShow API


4-1208798881
POP
2008-04-21 21:28
2009.05.10
Хардварный и Виртуальный COM порт.


15-1236243315
Mephisto
2009-03-05 11:55
2009.05.10
Regular Expression





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