如何使用mysqldump仅导出CREATE TABLE命令?

FMc*_*FMc 36 mysql mysqldump

我正在尝试使用mysqldump仅导出数据库模式 - 没有数据,没有其他SQL注释,只有CREATE TABLE命令.这是我到目前为止所得到的:

mysqldump -h localhost -u root -p --no-data --compact  some_db
Run Code Online (Sandbox Code Playgroud)

它几乎实现了我想要的,但我想消除"字符集"行(如下面示例输出中的前3行).有没有mysqldump选择呢?

/*!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.
Run Code Online (Sandbox Code Playgroud)

这是我的版本信息,如果重要的话:

mysqldump Ver 10.13 Distrib 5.1.34, for Win32 (ia32)
mysql Ver 14.14 Distrib 5.1.34, for Win32 (ia32)
Run Code Online (Sandbox Code Playgroud)

AJ.*_*AJ. 28

这也使用grep,但它似乎工作:

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

我正在使用:

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

  • -d是--no-data所以这应该回答问题 (10认同)

Xav*_*ohn 10

这是在没有字符集和AUTO_INCREMENT的情况下转储模式的命令.

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

下面是没有字符集,AUTO_INCREMENT和注释的转储模式的命令

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


Ask*_*ter 5

mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d"
Run Code Online (Sandbox Code Playgroud)


Mat*_*doy 5

mysql> SHOW CREATE TABLE mytablename;
Run Code Online (Sandbox Code Playgroud)