Вы делаете большой проект для удаленного заказчика. Пилотный вариант уже готов и отправлен заказчику, который заполняет базу данными, нажимает кнопочки, печатает отчеты и радуется, как же все здорово и автоматически работает.
По мере того, как заказчик все больше входит во вкус новой жизни, у него появляются новые потребности, хотелки и капризы. Удаленный доступ к его компьютеру зачастую просто отсутствует, и даже если он есть, не всегда удобен (плохой интернет, необходимость работать ночью из-за разных часовых поясов и т.п.). Поэтому Вы спокойно реализуете запросы заказчика на своей копии базы и в какой-то момент решаете, что можно обновить его рабочую версию. Для этого вам нужны все записи всех таблиц, в которых пользователи могли изменить старые или завести новые данные. Следовательно, сначала нужно экспортировать все "пользовательские" данные из старой базы в промежуточные (транзитные) файлы, а затем из этих файлов импортировать все данные в соответствующие таблицы обновленной "пустой" версии БД.
Вроде бы ничего сложного, но на практике это требует множества "телодвижений" и соблюдения простых, но очень важных условий. Можно все это делать и вручную, но при большом количестве таблиц такая работа становится нудной, требующей повышенной аккуратности и чреватой фатальными ошибками - потеря связей между таблицами, задублированность счетчиков и просто "каша" в данных.
Попробуем сделать эту процедуру простой, надежной и хотя бы частично ее автоматизировать...