Подтвердить что ты не робот

Как использовать mysqldump для экспорта только команд CREATE TABLE?

Я пытаюсь использовать mysqldump для экспорта только схемы БД - никаких данных, никаких дополнительных комментариев 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)
4b9b3361

Ответ 1

В этом также используется grep, но он работает:

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

Я использую:

Версия 10.11 Распространение 5.0.51a, для debian-linux-gnu (x86_64)

Ответ 2

Вот команда выгрузить схему без набора символов и 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//'

Ответ 3

mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d"

Ответ 4

mysql> SHOW CREATE TABLE mytablename;