1 Сопоставление
2 Ключи и волны
3 План и перенос
Источник
Приёмник
Тяните от кружка источника к кружку приёмника, чтобы связать поля
Живой предпросмотр — строки источника через преобразования, в колонках приёмника
нажмите «Живой предпросмотр»
keymap — карта соответствия старого внутреннего идентификатора (id) строки источника новому ключу приёмника.
После вставки сущности запоминается пара старый ID источника → новый ключ приёмника; при переносе
зависимых сущностей внешние ключи (перевязка, преобразование «Ссылка») подставляются из keymap уже
с новыми значениями. Волны — это порядок выполнения по FK-графу приёмника: сначала справочники, затем
зависимые от них документы и табличные части.
Порядок волн — топосорт таблиц приёмника по FK
нажмите «Пересчитать», чтобы увидеть порядок волн
Перед боевым прогоном сделайте сухой прогон (dry-run): движок реально пишет данные во
служебную схему приёмника _dm_migration_stage той же СУБД — так честно ловятся типы,
NOT NULL, усечения, дубли бизнес-ключа и «сироты» FK. Staging-таблицы можно открыть конструктором
и полистать до единой строки. Боевой перенос заблокирован, пока dry-run не пройден.
Порядок волн — в этом порядке пойдёт перенос
нажмите «Пересчитать», чтобы увидеть порядок волн
Полный прогон в служебную схему _dm_migration_stage — реальные INSERT, но не в бой.
Режим выгрузки. В боевую систему напрямую в БД не пишем — в обход бизнес-логики,
нумерации и ЖЦ. Мигратор собирает пакет миграции: migration.json
(данные по типам, связи через бизнес-ключи, а не внутренние id) + папка
files/ с телами документов. Пакет загружается в приёмник его штатным импортом / API.
Формат dm-migration/1.0; тела файлов (bytea-вложения) выгружаются отдельным потоком в каталог сервера — отдельно от метаданных.
Режим API. Данные грузятся POST/PATCH-запросами в сервис интеграции приёмника
(REST/OData). Приёмник сам создаёт запись через свою бизнес-логику и
возвращает новый Id (заголовок Location) — он идёт в keymap и подставляется
в связи зависимых записей ({"Person":{"Id":…}}). Секреты хранятся как переменные
окружения сервера, в предпросмотре и логах маскируются (••••), в query-строку не попадают.
Тест шлёт один реальный запрос по первой записи и показывает ответ приёмника.
Предпросмотр HTTP-запросов
Собрано из маппинга и настроек. Связи → navigation-свойства с Id из keymap; порядок — по волнам. Секреты замаскированы.