воскресенье, 24 апреля 2016 г.

Восстановление столбца из бекапа MySQL

Пришел клиент с задачей восстановить определенный столбец в определенной таблице MySQL с тем вариантом, что бы добавленные данные со времени бекапа остались в базе.

Пишу краткую заметку для себя.

Мне повезло, клиент бекапил таблицы отдельно и был бекап нужной таблицы, если же у Вас полный бекап базы, то можно получить нужный дамп таблицы, например так.

Берем бекап таблицы users.sql.
Столбец нужно восстановить - status.
Переименовываем в дампе таблицу с users на users2:
# sed -i 's/users/users2/g' users.sql

После чего в нашей базе есть таблица users (актуальная версия таблицы) и users2 (версия таблицы из бекапа).



Подключаемся к базе и выполняем запрос:
mysql# UPDATE users SET
users.status = (SELECT users2.status 
                    FROM users2 
                    WHERE users.id = users2.id);

И удаляем временную таблицу users2:
mysql# DROP TABLE users2;


Комментариев нет:

Отправить комментарий