如何正确擦除数据库并重新导入?
How to properly wipe a database, and re-import?
我不确定执行此操作的最佳方法。当我准备将新数据库投入生产时,我需要从在我处理它的同时形成的旧数据库中导入数据。新数据库现在还包含许多用于测试的虚假数据,我必须将其删除,因此全新的完全重新导入似乎是合理的。
现在,截断新数据库中的所有表无法通过,因为外键阻止了它。只需删除数据即可解决该问题,但会将 AUTO_INCREMENT
索引保留为它们所在的值,因此它不是 "proper" 擦除。现在,可能会有更多的属性,比如那个,会被遗留下来(可以这么说),但这是我所知道的唯一一个。
所以我现在的问题是,如果我采用简单的 DELETE
解决方案,这些 "leftover" 数据会对性能造成多大的影响?
还有;有没有一种方法可以更彻底地清除它,当然也允许我保留定义的约束?
首先,我会使用一些 gui 工具为旧数据库创建转储(例如 mySql workbench,或者您喜欢的任何东西)。检查选项 "Export to self-contained file",并检查 "Dump stored procedures and functions"、"Dump events" 和 "Dump triggers".
然后为旧数据库中未包含的所有表获取创建脚本。
您可以通过 "reverse engineer" 选项执行此操作。
如果您在这部分遇到问题,post 会有所帮助。
How to get a table creation script in MySQL Workbench?
当您有旧的数据库转储并为新的 sql 表创建脚本时,将它们合并到一个 sql 文件中。
在第一行添加:
SET FOREIGN_KEY_CHECKS = 0;
在最后一行添加:
SET FOREIGN_KEY_CHECKS = 1;
运行 脚本。因此,您应该拥有所有表(没有数据的新表和有数据的旧表),并正确设置了所有关系。希望对你有用。
我不确定执行此操作的最佳方法。当我准备将新数据库投入生产时,我需要从在我处理它的同时形成的旧数据库中导入数据。新数据库现在还包含许多用于测试的虚假数据,我必须将其删除,因此全新的完全重新导入似乎是合理的。
现在,截断新数据库中的所有表无法通过,因为外键阻止了它。只需删除数据即可解决该问题,但会将 AUTO_INCREMENT
索引保留为它们所在的值,因此它不是 "proper" 擦除。现在,可能会有更多的属性,比如那个,会被遗留下来(可以这么说),但这是我所知道的唯一一个。
所以我现在的问题是,如果我采用简单的 DELETE
解决方案,这些 "leftover" 数据会对性能造成多大的影响?
还有;有没有一种方法可以更彻底地清除它,当然也允许我保留定义的约束?
首先,我会使用一些 gui 工具为旧数据库创建转储(例如 mySql workbench,或者您喜欢的任何东西)。检查选项 "Export to self-contained file",并检查 "Dump stored procedures and functions"、"Dump events" 和 "Dump triggers".
然后为旧数据库中未包含的所有表获取创建脚本。 您可以通过 "reverse engineer" 选项执行此操作。 如果您在这部分遇到问题,post 会有所帮助。 How to get a table creation script in MySQL Workbench?
当您有旧的数据库转储并为新的 sql 表创建脚本时,将它们合并到一个 sql 文件中。
在第一行添加:
SET FOREIGN_KEY_CHECKS = 0;
在最后一行添加:
SET FOREIGN_KEY_CHECKS = 1;
运行 脚本。因此,您应该拥有所有表(没有数据的新表和有数据的旧表),并正确设置了所有关系。希望对你有用。