Задача. Перенести базу данных в PostgreSQL так, чтобы владелец мог сам убедиться: каждая строка и каждый цент на месте, и это видно в отчёте.
Решение. Структура и данные переносятся одной транзакцией: при сбое всё откатывается, и база никогда не остаётся перенесённой наполовину. Старая база открывается только для чтения. Затем отчёт о проверке сравнивает обе стороны таблицу за таблицей: число строк и контрольную сумму каждого значения, проверки по столбцам (пустые значения, суммы, длина текста, диапазоны дат), внешние ключи на каждой строке, индексы и последовательности ключей.
Результат. 11 таблиц, 15 607 строк, 11 внешних ключей и 10 индексов, всё совпадает. Сам отчёт я тоже проверила: испортила данные шестью способами (один цент в итоговой сумме, потерянная строка, одна изменённая буква, дата со сдвигом на секунду, лишняя строка, сброшенная последовательность ключей), и каждый раз отчёт называл таблицу и показывал первую строку с расхождением. Отчёт открывается в браузере или на телефоне и печатается в PDF.
Демо на открытой учебной базе Chinook (лицензия MIT), без клиента. В реальном проекте первый этап — пробный перенос вашей базы с таким отчётом, ещё до каких-либо изменений в рабочей системе.
