How do I use mysqldump to export only the CREATE TABLE commands?

蹲街弑〆低调 提交于 2019-12-31 08:42:54

问题


I'm trying to use mysqldump to export only the DB schema -- no data, no additional SQL comments, just the CREATE TABLE commands. Here's what I've got so far:

mysqldump -h localhost -u root -p --no-data --compact  some_db

It almost achieves what I want, but I'd like to eliminate the "character set" lines (those like the first 3 lines in the example output below). Is there a mysqldump option to do that?

/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bar_id` int(11) DEFAULT NULL,
  `bazz` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=369348 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bar` (
...etc.

Here's my version info, in case that matters:

mysqldump Ver 10.13 Distrib 5.1.34, for Win32 (ia32)
mysql Ver 14.14 Distrib 5.1.34, for Win32 (ia32)

回答1:


This uses grep as well, but it seems to work:

mysqldump -d --compact --compatible=mysql323 ${dbname}|egrep -v "(^SET|^/\*\!)"

I'm using:

Ver 10.11 Distrib 5.0.51a, for debian-linux-gnu (x86_64)




回答2:


Here is the command to dump the schema without the character set and AUTO_INCREMENT.

mysqldump -h localhost -u root -p --no-data  YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//'

Here is the command to dump the schema without the character set, AUTO_INCREMENT and the comments

mysqldump -h localhost -u root -p --no-data --compact YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//'



回答3:


mysql> SHOW CREATE TABLE mytablename;



回答4:


mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d"



回答5:


Did you try the --skip-comments option mentioned in the manual? Does it help?

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




回答6:


Use --skip-set-charset option.

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_set-charset



来源:https://stackoverflow.com/questions/1842076/how-do-i-use-mysqldump-to-export-only-the-create-table-commands

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!