我如何备份一个表结构,而不是MySQL中的数据

我正在使用MySQLpipe理员进行数据库备份。 我可以完全备份整个数据库的所有表。 有一些表的大小非常大,所以我不知道我是否只能备份表的结构(只有它们的元素),而不是他们的数据。

使用--no-data开关和mysqldump来告诉它不要转储数据,只有表结构。

这将输出表的CREATE TABLE语句。

像这样的东西

 mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql 

要定位特定的表格,请在数据库名称后面input它们。

 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

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

正如LukeR所说,mysqldump的–no-data选项将会做你想做的事情。

补充说,这是我写的一个备份脚本,它将所有的mysql数据库转储为纯文本文件,并为每个数据库的表模式和数据创build单独的转储文件(这是很常见的想要恢复或创build另一台MySQL服务器上的表没有数据,当你只有CREATE TABLE / CREATE INDEX等命令的时候已经有了一个小文件,这样做更容易)

 #!  /斌/庆典

 #backup-mysql.sh
 #
 #Craig Sanders <[email protected]>
 #这个脚本是在公共领域。 做任何你想要的东西。

 MYUSER = “USERNAME”
 MYPWD = “PASSWD”

 ARGS =“ -  single-transaction --flush-logs --complete-insert”

 DATABASES = $(mysql -D mysql --skip-column-names -B -e'show databases;'| egrep -v'information_schema');


 BACKUPDIR =的/ var /备份/ MySQL的

 YEAR = $(date+“%Y”)
 MONTH = $(date+“%m”)
 DAY = $(date+“%d”)

 DATE = “$ $年 - 月/ $ $年 - 月 -  $ DAY”

 mkdir -p $ BACKUPDIR / $ DATE
 cd $ BACKUPDIR / $ DATE

为我在$ DATABASES; 做
   echo -n“备份$ i:schema ...”
   mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql

  回声-n“数据...”
   mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql

  回声-n“压缩...”
   gzip -9fq $ i.schema.sql $ i.data.sql
  回声“完成”。
 DONE

 #删除超过30天的备份文件
 OLD = $(find$ BACKUPDIR -type d -mtime +30)
如果[-n“$ OLD”]; 然后
        回声删除旧的备份文件:$ OLD
         echo $ OLD |  xargs rm -rfv
科幻

你也可以通过执行一个DESCRIBE <tablename>并通过复制/粘贴结果来通过mysql命令行界面手动执行此操作。