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