您好我使用mysql管理员并已恢复备份文件(backup.sql)。我想使用恢复没有数据的结构,它没有给我一个选项。我知道phpadmin提供了这个。但是,我无法使用它。任何人都可以告诉我一个简单的方法吗?
答案 0 :(得分:6)
仅转储数据库结构:
cat backup.sql | grep -v ^INSERT | mysql -u $USER -p
这将执行backup.sql文件中的所有内容,但将填充表的INSERT行除外。运行之后,您应该拥有完整的表结构以及原始数据库中的任何存储过程/视图/等,但是您的表都将为空。
答案 1 :(得分:1)
您可以使用sed
将转储中的ENGINE更改为BLACKHOLEcat backup.sql | sed 's/ENGINE=(MYISAM|INNODB)/ENGINE=BLACKHOLE/g' > backup2.sql
这个引擎只会“吞下”INSERT语句,表格将保持为空。当然,您必须使用以下方法再次更改ENGINE。
ALTER TABLE `mytable` ENGINE=MYISAM;
答案 2 :(得分:0)
IIRC backup.sql文件(如果由mysqldump创建)只是文本文件中的SQL命令。只需从文件的开头复制粘贴所有“create ...”语句,但不要将“insert”语句复制到另一个文件中,而“mysql< newfile”应该有空数据库而不包含任何数据。
答案 3 :(得分:0)
没有办法告诉mysql客户端跳过INSERT命令。最简单的方法是按原样运行脚本并让它加载数据,然后只是TRUNCATE所有表。
答案 4 :(得分:0)
您可以编写脚本来执行以下操作:
1:将转储导入新数据库。
2:用循环截断所有表。
3:再次导出数据库。
4:现在你只有结构
答案 5 :(得分:-1)
您可以使用
备份MYSQL数据库结构mysqldump -u username –p -d database_name > backup.sql
(您不应该在命令行提供密码,因为它会导致安全风险。默认情况下,MYSQL会要求输入密码。)