Доброе время суток.
Возник вопрос по обновлению БД. Ситуация такова, что есть 2 дампа ДБ. Один из низ является развитем предыдущего. На основе старой схемы есть рабочая БД , как её можно привести к виду во втором дампе ?
Без глубокого понимания что и как - никак.
Например, если в первом дампе была переименована таблица и теперь называется по-другому во втором - как вы будете не зная этого перегонять данные? Или если в таблицу было добавлено новое поле/удалено старое.
Для таких вещей, разрабочики приложений, которые используют БД пишут специальные скрипты миграции.
Сравнив 2 файла, действительно можно найти отличия в таблицах( но отличия не существенны, добавленны поля, удалены 2 таблицы). Если мы абстрогируемся есть ли штатные средства для такой миграции ?
Я вам уже объяснил - каким образом штатные средства должны работать, не зная логики работы приложений?
Вот вы говорите добавлены поля - что туда писать? Удалены две таблицы - вы точно уверены, что данные из них никуда не надо перенести?
Зная что куда надо переносить, можно взять какой-нибудь инструмент-шлюз типа Ardent Datastage (коммерческий) и создать с его помощью шлюз из одной БД в другую.
Но опять же тут куча ограничений, - т.е. если вы снесли что то не в той базе,
то эта утилита вам создаст ALTER запрос, который вам снесёт таблицу и во второй базе.
Поэтому я и говорю, что автоматические такие вещи не делаются, а пишутся скрипты миграции с одной структуры БД на другую. Тогда и не пропадёт ничего и данные загрузятся куда нужно
Без глубокого понимания что и
Без глубокого понимания что и как - никак.
Например, если в первом дампе была переименована таблица и теперь называется по-другому во втором - как вы будете не зная этого перегонять данные? Или если в таблицу было добавлено новое поле/удалено старое.
Для таких вещей, разрабочики приложений, которые используют БД пишут специальные скрипты миграции.
Сравнив 2 файла,
Сравнив 2 файла, действительно можно найти отличия в таблицах( но отличия не существенны, добавленны поля, удалены 2 таблицы). Если мы абстрогируемся есть ли штатные средства для такой миграции ?
Я вам уже объяснил - каким
Я вам уже объяснил - каким образом штатные средства должны работать, не зная логики работы приложений?
Вот вы говорите добавлены поля - что туда писать? Удалены две таблицы - вы точно уверены, что данные из них никуда не надо перенести?
Зная что куда надо переносить, можно взять какой-нибудь инструмент-шлюз типа Ardent Datastage (коммерческий) и создать с его помощью шлюз из одной БД в другую.
Если только для структуры то
Если только для структуры то можно использовать
http://apgdiff.startnet.biz/
Но опять же тут куча ограничений, - т.е. если вы снесли что то не в той базе,
то эта утилита вам создаст ALTER запрос, который вам снесёт таблицу и во второй базе.
Поэтому я и говорю, что
Поэтому я и говорю, что автоматические такие вещи не делаются, а пишутся скрипты миграции с одной структуры БД на другую. Тогда и не пропадёт ничего и данные загрузятся куда нужно