【问题标题】:How to properly wipe a database, and re-import?如何正确擦除数据库并重新导入?
【发布时间】:2020-05-06 23:17:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您有创建脚本,那么只需删除整个数据库并重新创建它。如果你还没有,那就继续努力吧。

标签: mysql database database-performance data-import


【解决方案1】:

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

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

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

在第一行添加:

SET FOREIGN_KEY_CHECKS = 0;

在最后一行添加:

SET FOREIGN_KEY_CHECKS = 1;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多