Перенос данных

Часто приходится переходить с одной конфигурации Terrasoft на другую.

Опишу переход Terrasoft Sales 3.1.1.6 на Terrasoft X15 3.1.1.6
Обе базы под Firebird.

Можно просто загрузить сервисы x15 на Sales, но при такой процедуре возможны всякого рода неприятности, например у меня не получилось загрузить все wa_**.

Перенос данных требовал всего лишь импорта контактов и контрагентов. Есть в утилите IB Expert полезная функция Table Data Comparer, в которой просто нужно указать таблицу источник и таблицу приемник, затем выполнить сгенерированный скрипт.

Единственная трудность заключается когда в tbl_Account есть записи с заполненым полем PrimaryContactID, а в tbl_Contact записи с заполненым полем AccountID, в этом случае перенос всех записей не возможен.

Решение:
1. В базе источнике создаем копию таблицы tbl_Account, скажем tbl_Account2 и с помошью того же Table Data Comparer копируем данные из tbl_Account в tbl_Account2

2. В tbl_Account2 устанавливаем все значения PrimaryContactID в null

3. Копируем в tbl_Account базы приемника данные из tbl_Account2 базы источника

4. Копируем в tbl_Contact базы приемника данные из tbl_Contact базы источника

5. Копируем в tbl_Account базы приемника данные из tbl_Account базы источника

6. Копируем в tbl_Contact базы приемника данные из tbl_Contact базы источника

Нравится

Поделиться

7 комментариев

Павел!

Могу посоветовал решение попроще.

На момент переноса данных между таблицами tbl_Account и tbl_Contact удаляются внешние ключи, а после окончания переноса - ключи снова создаются.

А вот если сделать так:
- сохранить сервисы tbl_Contact и tbl_Account;
- перенести данные;
- загрузить сохраненные сервисы;
Какова вероятность, что сервисы встанут корректно и без проблем?
Если такое попробовать провернуть на большем наборе сущностей чем 2 таблици?

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

А как они могут нарушить целостность, если они ее не нарушают в базе-источнике? Ведь мы просто сгенерируем два скрипта вида "insert into tbl_Account ..." и "insert into tbl_Contact" со всеми значениями полей.
Вопрос к тому не могут на корректный перенос повлиять может какие-нибудь триггеры?

Могут, т.к. таблицы контактов и контрагентов дополнительно ссылаются еще на десяток справочников, и в этом случае нужно переносить и их

Ах да, точно...
Но создание связей вручную, так же чревато этой проблемой...

Конечно же

Показать все комментарии