1

Тема: сравнение баз даннных

Добрый день всем!

Помогите, плиз, у меня есть тестовая база (mySQL) и есть рабочая. В тестовой я надобавлял полей. Так получилось, что я случайно стер все свои запросы на апдейт таблиц...
Есть возможность сравнить две базы и дополнить рабочую нужными полями без утраты данных, ессно..

Спасибо огромное.

2

Re: сравнение баз даннных

Вам может помочь запрос REPLACE. Для начала сохраните обе таблицы, чтобы не потерять их данные.

1) Перенесите обе таблицы в одну базу данных (можно создать отдельную).
2) Создайте запрос на обновление строк в тестовой таблице. Это означает, что строки из рабочей таблицы заменят строки в тестовой таблице с идентичными первичными ключами, при этом остальные строки затронуты не будут.

REPLACE INTO `test_table` SELECT * FROM `work_table`;

3

Re: сравнение баз даннных

Спасибо большое!
Видимо, по неопытности я поставил не правильно вопрос.

Есть рабочая база с данными - 162 таблицы. в течение 6 месяцев программа и структура базы были доработаны (локально). Теперь новую структуру (поля только добавлялись, старые не удалялись) базы 164 таблицы необходимо наложить на рабочую базу. Таблицы локальной базы были дополнены полями на 20-25% (это около 30 таблиц были дополнены двумя - тремя полями каждая).
Я не помню, какие поля добавлял. Проверять все таблицы и ручками добавлять поля в рабочей базе долго.

Может есть какой-н способ заменить старую базу на новую без потери данных.

Спасибо большое.

4

Re: сравнение баз даннных

Если речь только о структуре таблиц, и если были только добавлены поля, то замена структур таблиц не должна вызвать затруднений. Переносим структуру таблиц и затем копируем данные с помощью INSERT ... SELECT (в новые поля вставляйте NULL).

Дальше обновить данные можно только через UPDATE (если строки не добавлялись), либо через REPLACE.

Более простых способов все это сделать не знаю.