6

我有一个已备份的数据库。现在我正在尝试从原始数据库中删除所有内容并将其恢复为空状态。因为它是一个关系数据库,所以它具有关键约束。有什么工具可以用来做这个吗?

4

2 回答 2

8

最简单的方法可能是禁用外键检查,然后截断表。由于外键被禁用,截断表的顺序无关紧要。

set foreign_key_checks = 0;
truncate table parent;
truncate table child;
truncate table ...

您甚至可以使用 information_schema 为您生成截断表语句。像这样的东西:

select concat('truncate table ',table_schema,'.',table_name,';') as sql_stmt
from information_schema.tables
where table_schema = 'your_schema_name'
and table_type = 'base table';
于 2010-12-15T16:32:07.810 回答
2

您可以暂时删除或禁用所有约束,截断所有表,然后恢复约束。我已经为 SQL Server 采用了这种方法,并且效果很好。

http://lists.mysql.com/mysql/194954

也许更好的方法是将架构反转为脚本(您将其置于版本控制之下),然后从头开始重新创建数据库。

于 2010-12-15T15:43:35.000 回答