mysql:从备份中恢复列的值

问题描述 投票:3回答:4

我遇到麻烦了。代替启动脚本

UPDATE table_name SET field=value WHERE id=12345

我发射了

UPDATE table_name SET field=value

每天备份数据库(使用mysqldump)。使用备份还原该列的值的最简单方法是什么。显然,由于数据库不断变化,我无法直接应用该备份。

谢谢你!!

mysql backup database-backups
4个回答
5
投票

我将创建一个新表'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)

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
投票

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

我建议将备份解压缩到单独的数据库中,然后执行类似的操作

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

[我也建议您复制您的实时网站,以便首先尝试;)


1
投票

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

update db1.table set db1.field = db2.field where db1.id = db2.id
© www.soinside.com 2019 - 2024. All rights reserved.