Бесплатно зарегистрируйся и получай уведомления о новых проектах по работе

Доработать скрипт работающий с базами данных

S
Заказчик
Отзывы фрилансеров: + 1 - 0
Зарегистрирован на сайте 11 лет и 2 месяца
Бюджет: по договоренности
 

Есть две БД PostgreSQL и FireBird. Нужно синхронизировать одну таблицу между ними.

Частичная реализация готова ее нужно только подпилить. Таблицы и там и там одинаковые. За исключением одного поля (FIREID и POSTID).


Схематично выглядит так:

|request_id| |SHAPE| |FL_READY| |FIREID| <===> |request_id| |SHAPE| |FL_READY| |POSTID|


Задача:

1. Взять из PostgreSQL все данные с FL_READY=10

2. Выгрузить их в FireBird

3. Поменять флаг в PostgreSQL на FL_READY=10 (данные ожидают синхронизации)


Важный момент. SHAPE — бинарное поле. У меня напрямую выгрузить его из одной БД в другую не получилось. Там реально какой-то гемор.

Скорость работы приложения вообще не важна. Предполагается сделать сделать так.

Данные обрабатываются построчно. Т.е. делаем одну выборку. Сохраняем текстовые данные в другую БД. Блоб на ФС и потом далаем UPDATE в целевой базе (вставляем его).

Потом удлаляем блоб с файловой системы.


Делаем такую же операцию с другой строкой и тд.


Важный момент 2. Поле request_id из PostgreSQL должно будет стать полем POSTID в FireBird. Это нужно чтобы понять что к чему относится. Типа связывание.

=============================


Сейчас порядок операций раелизован так.

SyncRequest(postconn, fireconn, 'POSTID', 'FIREID')

Меня этот вариант устраивает полностью.

Обратный порядок может быть сделан путем указания в начале 'FIREID' и потом 'POSTID'


Далее должна быть возможность использовать данную процедуру задом наперед. С рядом упрощений.

Если у нас туперь у FireBird появился флаг 20, то берем можно по ИД или гуиду обратиться к PostgreSQL и обновить у него на FL_READY=12.


А в самом FireBird поменять флаг на 21.


Собственно все.


Желательно оформить все в виде двух функций с комментариями. За основу лучше взять текущую реализацию.


Важно чтобы код был простой и линейный — мне нужно чтобы я сам легко его мог поправить. Поэтому никаких классов. Пароли тоже можно захардкодить.

Тупо функции которые работают последовательно.


В настоящий момент в коде используется одна единственная функция:

SyncRequest


Текущая реализация не работает с бинарными блобами. На выходе нужно 2-3 или сколько там у вас функций получится.


Для работы с FireBird лучше использовать менеджер FlameRobin. БД реально очень простая.


Вот сами дампы БД:

expirebox.com/download/c1...


Вот имеющийся код:

www.everfall.com/paste/id...

Там в моем коде есть еще фрагмент по работе с prod_type_id. Сейчас вообще не могу вспомнить что оно делало.


Вроде бы все развернуто максимально написал.

Вот если что как оно с БД работает: stackoverflow.com/questio...
Разделы:
Опубликован:
26.05.2016 | 20:59

Теги: нужен программист, ищу программиста, резюме программиста, требуется база данных

Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».