如何正确擦除数据库,然后重新导入?

问题描述 投票:0回答:1

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

现在,无法通过截断新数据库中的所有表,因为外键阻止了它。只需删除数据即可解决该问题,但是它将AUTO_INCREMENT索引保留在它们所在的值,因此这不是“适当的”擦除。现在,可能会有更多这样的属性(可以这么说)保留下来,但这是我所知道的唯一属性。

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

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

mysql database database-performance data-import
1个回答
0
投票

首先,我将使用一些gui工具为旧数据库创建转储(例如mySql工作台,或者您喜欢的东西)。选中选项“导出到自包含文件”,然后选中“转储存储过程和功能”,“转储事件”和“转储触发器”。

然后为旧数据库中未包括的所有表获取创建脚本。您可以通过“逆向工程师”选项来执行此操作。如果您对此部分有疑问,这篇文章会有所帮助。How to get a table creation script in MySQL Workbench?

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

在第一行上添加:

SET FOREIGN_KEY_CHECKS = 0;

在最后一行添加:

SET FOREIGN_KEY_CHECKS = 1;

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

© www.soinside.com 2019 - 2024. All rights reserved.