我如何使用mysqldump来只导出CREATE TABLE命令?
题
我试图用mysqldump
仅导出DB模式 - 没有数据,没有额外的SQL意见,只是CREATE TABLE
命令。下面是我到目前为止有:
mysqldump -h localhost -u root -p --no-data --compact some_db
它几乎达到我想要的,但我想消除“字符集”线(象那些在下面的例子中输出的第一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.
下面是我的版本信息,如果该事项:
mysqldump Ver 10.13 Distrib 5.1.34, for Win32 (ia32)
mysql Ver 14.14 Distrib 5.1.34, for Win32 (ia32)
解决方案
此使用的grep为好,但它似乎工作:
mysqldump -d --compact --compatible=mysql323 ${dbname}|egrep -v "(^SET|^/\*\!)"
我使用:
版10.11 DISTRIB 5.0.51a,对于 Debian的Linux-GNU(x86_64的)
其他提示
下面是转储不字符集和AUTO_INCREMENT模式中的命令。
mysqldump -h localhost -u root -p --no-data YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//'
下面是转储没有字符集架构中的指令,并且AUTO_INCREMENT的评论
mysqldump -h localhost -u root -p --no-data --compact YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//'
mysql> SHOW CREATE TABLE mytablename;
mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d"
您是否尝试过在手册中提到的--skip-评论的选项?帮助?
http://dev.mysql.com/doc /refman/5.1/en/mysqldump.html#option_mysqldump_comments
使用--skip-set-charset
选项。
http://dev.mysql.com/ DOC / refman / 5.1 / EN / mysqldump.html#option_mysqldump_set-字符集
不隶属于 StackOverflow