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|^/\*\!)"
私が使用しています:
Ver 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-commentsオプションを試しましたか?それは役に立ちますか?
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-charset