Задать вопрос
@homer741

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

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

Как это можно реализовать? При условии что у меня 30 +- связанных таблиц.
Если не знаете как сделать сразу для 30 таблиц, подскажите, тогда как сделать для 1, я дальше сам додумаю.
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы