4

您好我使用 mysql 管理员并已恢复备份文件 (backup.sql)。我想在没有数据的情况下使用恢复结构,但它没有给我这样做的选择。我了解 phpadmin 提供了这个。但是我不能使用这个。谁能告诉我一个简单的方法?

4

6 回答 6

6

仅转储数据库结构:

cat backup.sql | grep -v ^INSERT | mysql -u $USER -p

这将执行 backup.sql 文件中的所有内容,除了将填充表的 INSERT 行。运行此程序后,您应该拥有完整的表结构以及原始数据库中的任何存储过程/视图等,但您的表将全部为空。

于 2010-11-24T17:38:27.627 回答
1

您可以使用 sed 在转储中将 ENGINE 更改为 BLACKHOLE

cat backup.sql | sed 's/ENGINE=(MYISAM|INNODB)/ENGINE=BLACKHOLE/g' > backup2.sql

该引擎只会“吞下” INSERT 语句,并且表将保持为空。当然,您必须使用以下命令再次更改 ENGINE:

ALTER TABLE `mytable` ENGINE=MYISAM;
于 2011-10-02T14:05:20.113 回答
0

IIRC backup.sql 文件(如果由 mysqldump 创建)只是文本文件中的 SQL 命令。只需从文件开头复制粘贴所有“create ...”语句,而不是将“insert”语句复制粘贴到另一个文件和“mysql < newfile”中,您应该拥有一个没有任何数据的空数据库。

于 2009-09-29T17:24:28.680 回答
0

没有办法告诉 mysql 客户端跳过 INSERT 命令。最省事的方法是按原样运行脚本并让它加载数据,然后只截断所有表。

于 2009-09-29T18:53:04.070 回答
0

您可以编写一个脚本来执行以下操作:

1:将转储导入新数据库。

2:用循环截断所有表。

3:再次导出数据库。

4:现在你有了结构

于 2009-09-29T18:53:27.440 回答
-1

您可以使用备份 MYSQL 数据库结构

mysqldump -u username –p  -d database_name > backup.sql

(你不应该在命令行提供密码,因为它会导致安全风险。MYSQL默认会要求输入密码。)

于 2013-09-09T17:02:19.503 回答