@homer741

Импорт дампа бд?

Подскажите, пожалуйста, есть 2 базы данных. Мне нужно дамп из одной не просто заимпортить в другую, а именно смержить. То есть если в первой бд существует запись с id = 1 и name = Иван, а во второй таблице id = 1 и name = Маша, то он не должен перезаписать Ивана или не записать Машу, должно получиться так:
id = 1, name = Иван
id = 2, name = Маша

Как это можно реализовать? При условии что у меня 30 +- связанных таблиц.
Если не знаете как сделать сразу для 30 таблиц, подскажите, тогда как сделать для 1, я дальше сам додумаю.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если в базах есть внутренние связи, например, в одной таблице есть поле`users`.`id`, а в другой `comments`.`user_id`, то так просто перенумеровать не получится.
Я бы делал примерно так:
Для начала развернуть одну из баз, найти все такие связи, сделать их FOREIGN KEY с ON UPDATE CASCADE.
Затем в каждой из таблиц изменить id'ы так, чтобы они начинались со значений, больших, чем последний id в другой базе. Связи при этом должны измениться автоматически.
После этого надо проверить на наличие и конфликт UNIQUE KEY.
Потом отредактировать второй дамп, оставив от него только INSERT'ы и импортировать его.
Напоследок сделать ALTER TABLE, задав новые значения для AUTO_INCREMENT.
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
IBExpert умеет такое делать - выливаете дампы в две базы, потом у него есть diff по таблицам.

Теперь вам остается только найти версию, которая будет поддерживать MySQL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы