mysql:从备份中恢复列的值

时间:2012-02-10 13:27:44

标签: mysql backup database-backups

我遇到了麻烦。而不是launchin脚本

UPDATE table_name SET field=value WHERE id=12345

我发起了

UPDATE table_name SET field=value

每天备份数据库(使用mysqldump)。使用备份还原该列值的最简单方法是什么?显然,我不能直接应用该备份,因为数据库会不断更改。

提前谢谢!!

4 个答案:

答案 0 :(得分:5)

我会创建一个与'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 :(得分: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/

答案 2 :(得分:1)

您可以尝试将备份加载到另一个数据库,然后进行类似的操作(假设db1是生产数据库,db2是临时数据库)

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

答案 3 :(得分:1)

所以你清除了列中的所有值,并希望将所有值放回正确的行中?

我建议将备份解压缩到一个单独的数据库并执行类似

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

我还建议首先复制您的实际网站以尝试此操作;)