首页 > 解决方案 > 如何正确擦除数据库并重新导入?

问题描述

我不确定执行此操作的最佳方法。当我准备将新数据库投入生产时,我需要从在我工作期间形成的旧数据库中导入数据。新数据库现在还包含大量用于测试的虚假数据,我必须将其删除,因此重新完全重新导入似乎是合理的。

现在,无法截断新数据库中的所有表,因为外键阻止了它。简单地删除数据就可以解决该问题,但是它将AUTO_INCREMENT索引保留为它们所在的值,因此这不是“正确的”擦除。现在,可能会有更多的属性,例如那个,会留下(可以这么说),但这是我所知道的唯一一个。

所以我现在的问题是,如果我采用简单的解决方案,这些“剩余”数据会对性能造成多大的问题DELETE

并且; 有没有一种方法可以更彻底地清理它,当然也可以让我保留定义的约束?

标签: mysqldatabasedatabase-performancedata-import

解决方案


首先,我将使用一些 gui 工具为旧数据库创建转储(例如 mySql 工作台,或者您喜欢的任何东西)。选中“导出到独立文件”选项,并选中“转储存储过程和函数”、“转储事件”和“转储触发器”。

然后为旧数据库中未包含的所有表获取创建脚本。您可以通过“逆向工程”选项来做到这一点。如果您在这部分遇到问题,这篇文章会有所帮助。 如何在 MySQL Workbench 中获取表创建脚本?

当您有旧的数据库转储并为新的 sql 表创建脚本时,将它们组合到一个 sql 文件中。

在第一行添加:

SET FOREIGN_KEY_CHECKS = 0;

在最后一行添加:

SET FOREIGN_KEY_CHECKS = 1;

运行脚本。因此,您应该拥有所有表(没有数据的新表和有数据的旧表),并且所有关系都已正确设置。希望它对你有用。


推荐阅读