2012-02-10 5 views
1

У меня проблемы. Вместо launchin сценарияmysql: восстановить значение столбца из резервной копии

UPDATE table_name SET field=value WHERE id=12345 

Я начал

UPDATE table_name SET field=value 

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

Благодарим вас заранее!

+0

если база данных не совершала, а затем откатить ...: D –

+0

, что было сделано час назад. Как я могу откат? – Eugeny89

ответ

4

Я хотел бы создать новую таблицу 'table_name2', идентичную вашему 'table_name', но содержащую данные вашей резервной копии.

Затем использовать этот запрос:

UPDATE table_name SET 
table_name.field = (SELECT table_name2.field 
        FROM table_name2 
        WHERE table_name.id = table_name2.id) 
1

Вы можете попытаться загрузить резервную копию в другую базу данных, а затем сделать что-то вроде этого (в предположении, что DB1 является производство дб и db2 является временной базой данных)

update db1.table set db1.field = db2.field where db1.id = db2.id 
1

Таким образом, вы уничтожили все значения в и хотите вернуть все значения в правильные строки?

Я бы рекомендовал распаковкой резервную копию в отдельную базу данных и делать что-то вроде

UPDATE live_db.table_name live 
INNER JOIN backup_db.table_name backup 
     ON live.id = backup.id 
     SET live.field = backuop.field 

Я также рекомендовал бы сделать дубликат вашего живого сайта, чтобы попробовать это на первый;)

2

Я хотел бы восстановить резервную копию таблицы в другую таблицу под названием table_name_bck, а затем запустить следующий SQL.

UPDATE table_name_bck tb, table_name t 
SET t.field = tb.field 
WHERE tb.id = t.id 

Конечно, попробуйте это в тестовой среде, прежде чем предотвратить ухудшение вашей ситуации.

Источник: http://www.electrictoolbox.com/article/mysql/cross-table-update/

Смежные вопросы