首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确擦除数据库,并重新导入?

如何正确擦除数据库,并重新导入?
EN

Stack Overflow用户
提问于 2020-01-21 06:48:16
回答 1查看 364关注 0票数 0

我不确定做这件事的最好方法。当我准备将一个新数据库投入生产时,我需要从旧数据库中导入数据,这些数据是在我工作的同时形成的。新的数据库现在还包含许多用于测试的假数据,我必须删除这些数据,因此重新导入新的完整数据似乎是合理的。

现在,无法截断新数据库中的所有表,因为外键阻止了这一操作。只需删除数据就可以解决这个问题,但它会将AUTO_INCREMENT索引保留在原来的位置,因此这不是“适当”的擦除。现在,可能会有更多的属性,比如那个,会被遗留下来(可以这么说),但这是我唯一知道的。

因此,我现在的问题是,如果我使用简单的DELETE解决方案,这些“剩余”数据会给性能带来多大的问题?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 08:18:32

首先,我会使用一些gui工具为旧的DB创建转储文件(比如mySql工作台,或者您喜欢的任何工具)。选中“导出到自包含文件”选项,然后选中“转储存储过程和函数”、“转储事件”和“转储触发器”。

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

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

在第一行添加:

代码语言:javascript
复制
SET FOREIGN_KEY_CHECKS = 0;

在最后一行添加:

代码语言:javascript
复制
SET FOREIGN_KEY_CHECKS = 1;

运行脚本。因此,您应该拥有所有的表(没有数据的新表和有数据的旧表),并正确设置所有关系。希望它能为你工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59831896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档