Дано:
- база1 с многолетней историей, размер базы около 300 Гб;
- база2 пустая, с некоторыми выполненными настройками;
- у базы1 и у базы2 конфигурации одинаковы, но на уровне СУБД имена таблиц и полей разные (база2 создавалась с нуля загрузкой конфигурации);
- база1 и база2 находятся на одном сервере на одной и той же СУБД MSSQL Server.
Задача: максимально быстро перенести выбранные данные из базы1 в базу2, много даннных, много таблиц; выгрузка-загрузка dt исключена из рассмотрения.
Варианты
Вариант решения с путем универсальной выгрузки/загрузки слишком долгий и высок риск падения - так оно и происходило.
Вариант путем обработки "Выгрузка в сервис"/"Загрузка из сервиса" (Fresh) является решением, но слишком долгим.
Пришлось попробовать перенести данные напрямую через SQL, для чего написана обработка, которая генерирует скрипт SQL, копирующий данные из базы1 в базу2.
Порядок работы с обработкой
1) В базе1 и в базе2 на закладке "Сохранение структуры" указываем путь для сохранения структуры хранения данных (имена таблиц, имена полей) и жмем "Сохранить структуру".
2) В любой базе на закладке "Генерация скрипта" заполняем поля "Имя базы1", "Имя базы2", указываем ранее сохраненные файлы из шага (1), путь к файлу сохранения скрипта. Жмем кнопку "Сгенерировать скрипт".
3) В среде MS SQL Server Management Studio открываем сгенерированный скрипт, редактируем (удаляем лишнее) и запускаем.
Скрипт гененируется для MSSQL Server, но можно доработать и для PosgreSQL.
Ограничение, которое не позволило перенести полноценно все таблицы: для составных типов поля "_Fld...TYPE" отличаются, но уже не было времени вникать и дописывать условие данной ситуации.
Обработка тестировалась на платформе 8.3.18.1616 на конфигурации "Управление холдингом, редакция 3.1.14.26".