2009-12-03 16 views
31

Estoy tratando de usar mysqldump para exportar solo el esquema DB - sin datos, sin comentarios SQL adicionales, solo con los comandos CREATE TABLE. Esto es lo que tengo hasta ahora:¿Cómo uso mysqldump para exportar solo los comandos CREATE TABLE?

mysqldump -h localhost -u root -p --no-data --compact some_db 

Casi logra lo que quiero, pero me gustaría eliminar las "conjunto de caracteres" líneas (aquellos como las 3 primeras líneas en la salida de ejemplo a continuación). ¿Hay una opción mysqldump para hacer eso?

/*!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. 

Aquí está mi versión de información, en caso de que lo que importa:

mysqldump Ver 10.13 Distrib 5.1.34, for Win32 (ia32) 
mysql Ver 14.14 Distrib 5.1.34, for Win32 (ia32) 
+1

¿No podría simplemente utilizar más la consulta SQL SHOW CREATE TABL tbl_nameE' (ver http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html) – Romain

Respuesta

22

Esto utiliza grep también, pero parece que funciona:

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

que estoy usando:

Ver 10,11 Distrib 5.0.51a, por debian linux-gnu (x86_64)

+9

-d es --no-data así que esto debería responder a la pregunta –

+0

¡gran ayuda thx! – Shide

9

Este es el comando para volcar el esquema sin el conjunto de caracteres y AUTO_INCREMENT.

mysqldump -h localhost -u root -p --no-data YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//' 

Este es el comando para volcar el esquema sin el juego de caracteres, AUTO_INCREMENT y los comentarios

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

Mala idea: https://dev.mysql.com/doc/refman/5.7/en/set.html – miken32

4
mysql> SHOW CREATE TABLE mytablename; 
Cuestiones relacionadas