Answers:
使用--no-data
带有mysqldump 的开关来告诉它不要转储数据,仅转储表结构。
这将为表输出CREATE TABLE语句。
像这样
mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql
要定位特定的表,请在数据库名称后输入它们。
mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data
正如LukeR所说,mysqldump的--no-data选项将完成您想要的。
除此之外,这是我编写的一个备份脚本,该脚本将所有mysql数据库转储为纯文本文件,并为每个数据库的表架构和数据创建单独的转储文件(通常要在没有mysql服务器的情况下还原或创建表)数据,如果只用CREATE TABLE / CREATE INDEX等命令已经有了一个小文件,这将变得容易得多)
#!/ bin / bash #backup-mysql.sh # #克雷格·桑德斯<cas@taz.net.au> #此脚本在公共领域中。用它做任何你想做的。 MYUSER =“ USERNAME” MYPWD =“ PASSWD” ARGS =“-单一交易--flush-logs --complete-insert” 数据库= $(mysql -D mysql --skip-column-names -B -e'显示数据库;'| egrep -v'information_schema'); BACKUPDIR = / var / backups / mysql YEAR = $(日期+“%Y”) MONTH = $(日期+“%m”) DAY = $(日期+“%d”) DATE =“ $ YEAR- $ MONTH / $ YEAR- $ MONTH- $ DAY” mkdir -p $ BACKUPDIR / $ DATE cd $ BACKUPDIR / $ DATE 为我在$ DATABASES; 做 echo -n“正在备份$ i:模式...” mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql echo -n“数据...” mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql echo -n“正在压缩...” gzip -9fq $ i.schema.sql $ i.data.sql 回声“完成”。 完成 #删除30天以上的备份文件 OLD = $(找到$ BACKUPDIR -type d -mtime +30) 如果[-n“ $ OLD”]; 然后 回声删除旧的备份文件:$ OLD echo $ OLD | xargs rm -rfv 科幻
--routines
到模式脚本吗?
您还可以通过mysql
命令行界面手动执行此操作,DESCRIBE <tablename>
然后复制并粘贴结果。