2009-12-03 5 views
31

私はmysqldumpを使用して、DBスキーマのみをエクスポートしようとしています。データなし、追加の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は、TABLをCREATE使用できませんでした、文字セットなしでスキーマをダンプするコマンドですtbl_nameE'(http://dev.mysql.com/doc/refman/5.0/en/show-create-table.htmlを参照) – Romain

答えて

22

これは、同様のgrepを使用していますが、動作するようです:

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

私が使用している:

を10.11按分の5.0.51a Verは、 debian-のためにlinux-gnu(x86_64)

+9

-dは--no-dataですので、これは質問に答える必要があります –

+0

大きな助けthx! – Shide

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

4
mysql> SHOW CREATE TABLE mytablename; 
関連する問題