2012-02-10 116 views
1

我有問題。相反launchin腳本mysql:從備份中恢復列的值

UPDATE table_name SET field=value WHERE id=12345 

的我發起

UPDATE table_name SET field=value 

數據庫被備份每天(使用mysqldump)。使用備份恢復該列值的最簡單方法是什麼?顯然,我無法正確地應用該備份,因爲數據庫會不斷更改。

預先感謝您!

+0

如果數據庫未提交,然後回滾...:d – 2012-02-10 13:45:37

+0

這是一個小時前完成。我該如何回滾? – Eugeny89 2012-02-10 14:31:52

回答

4

我會創造一個與'table_name'相同但包含備份數據的新表'table_name2'。

然後用這個查詢:

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

你可以嘗試將備份加載到另一個數據庫中,然後讓這樣的事情(假定DB1是生產DB和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 

我還建議讓您的生活網站的副本來試試這第一;)