mysql хитро перезаписать базу

215
17 ноября 2018, 16:50

так немного предыстории: Работал сайт, с него снят бекап. На бекапе были произведены доработки и настройки. Но пока был этап разработки работал старый сайт, пополнял товары получал заказы и пользователей.

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

Надеюсь объяснил задачу, помогите найти оптимальное решение.

Answer 1

Вам нужно делать дамп базы, при помощи mysqldump со следующими параметрами

  • --no-create-info - не добавлять в дамп операторы CREATE TABLE
  • --replace - вместо оператора INSERT в дамп добавлять операторы REPLACE

Если вы меняли еще и структуры таблиц, тогда добавьте в создание дампа ключ --complete-insert. Он добавит в дамп еще и имена полей

Answer 2

Вариант 1. Для программистов. Написать скрипт, который построчно проверяет наличие строк по первичным ключам и добавляет элементы, которых нет. Или принимает решение о перезаписи по какому-то алгоритму

Вариант 2. Найти инструмент синхронизации БД. Под винду, знаю, это делает SQLYog (платный)

READ ALSO
перестал загружаться MySQL Workbench

перестал загружаться MySQL Workbench

На linux mint 183 установлен MySQL Workbench, все работало нормально, но внезапно перестал загружаться

295
Долгий импорт бд MySQL centos 7

Долгий импорт бд MySQL centos 7

База 4+ гб, импортирую через консоль уже 12 часовИ чем дальше - тем медленнее

278
Экспорт базы mysql

Экспорт базы mysql

Есть две базы первая(База_1) хранит в себе нужную нам информацию, а вторая(База_2) по структуре почти точно такая же, но имеет дополнительные...

198
Позиция блочных элементов на странице

Позиция блочных элементов на странице

Когда делаю 3 блочных элемента одинакового размера и добавляю их в другой div, то они "выстраиваются" в вертикальном порядке, те 1 блок, ниже...

183