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>然后复制并粘贴结果。