Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2014 16:16:58

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Есть две БД.
FireBird и PostgreSQL

Нужно синхронизировать содержимое. Из таблицы PostgreSQL данные прокидывать в FireBird. Как это сделать? В обе таблицы я добавил флаг синхронизации. Типа проведена/не проведена.

Создаю курсор и делаю SELECT из БД1 в поисках необходимых записей. Предположим я их выбрал. А дальше как быть? Как это выборку в другую БД отправить? Создать второй объект курсора, так? А сам запрос как сформировать на основании полученных данных?

	postcursor.execute('SELECT customer_id, customer_name, customer_data, customer_priority, customer_status, fl_ready FROM CUSTOMER WHERE fl_ready=0')
	postselect_result = postcursor.fetchall()

Отредактировано Suliman (Июнь 25, 2014 16:17:43)

Офлайн

#2 Июнь 27, 2014 10:11:30

john123
Зарегистрирован: 2013-12-22
Сообщения: 56
Репутация: +  7  -
Профиль   Отправить e-mail  

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

По сути Вы пишете сейчас программу для репликации данных между СУБД. Это, в общем-то, непростая задача

Если следовать Вашей реализации, то в коде Вам просто нужно держать открытыми 2 соединения - одно с FireBird, другое - с PostgreSQL. У каждого соединения будет свой курсор.
Так вот из курсора PostgreSQL делаете SELECT, а из курсора FireBird делаете INSERT.

Но вообще я бы порекомендовал синхронизировать данные через обычный слив/загрузку SQL-дампа. Конечно, если данных у Вас не очень много.
В противном случае Вам нужно будет как-то поддерживать версионность и отдавать дельту (только изменившееся), чтобы не гонять каждый раз десятки/сотни/тысячи гигабайт данных между таблицами

А вообще напишите поподробнее, в чем конкретно у Вас проблема.

Отредактировано john123 (Июнь 27, 2014 10:16:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version