2009-12-03 19 views
31

我試圖用mysqldump只導出數據庫模式 - 沒有數據,沒有額外的SQL註釋,只有CREATE TABLE命令。下面是我到目前爲止有:如何使用mysqldump導出只有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) 
+1

你能不能更簡單地使用SQL查詢'SHOW CREATE TABL命令tbl_nameE'(見http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html) – Romain 2009-12-03 18:55:49

回答

22

它使用grep的爲好,但它似乎工作:

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

我使用:

版10.11 DISTRIB 5.0.51a,爲 debian- linux-gnu(x86_64)

+9

-D是 - 無數據,所以這應該回答問題 – 2011-06-14 16:05:01

+0

偉大的幫助thx! – Shide 2016-05-13 15:46:29

9

這裏是轉儲沒有字符集和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//' 
4
mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d" 
+0

不好主意:https://dev.mysql.com/doc/refman/5.7/en/set.html – miken32 2017-09-07 22:50:47

4
mysql> SHOW CREATE TABLE mytablename;