Esquema de exportación MySql sin datos

492

Estoy usando una base de datos MySql con un programa Java, ahora quiero dar el programa a otra persona.

¿Cómo exportar la estructura de la base de datos MySql sin los datos, solo la estructura?

Darth Blue Ray
fuente

Respuestas:

963

Puedes hacerlo con la --no-dataopción con el comando mysqldump

mysqldump -u root -p --no-data dbname > schema.sql
Daric
fuente
11
En mi humilde opinión, mysqldumpes la mejor respuesta. El Administrador de MySQL está abandonado y MySQL Workbench todavía tiene muchos errores.
Álvaro González
49
También considere usar la --single-transactionopción si no quiere o no puede hacer bloqueos de tabla.
Jim
47
-d es --no-data para abreviar.
marstone
36
También considere agregar --rutinas si su base de datos tiene procedimientos / funciones almacenados
crafterm
15
Por defecto, esto no incluye el CREATE DATABASEcomando. Para incluir, reemplace dbnamecon --databases dbname(abreviatura:) -B dbname. Luego, para importar en otro servidor, usemysql -u root -p < schema.sql
Sean
88

Sí, puedes usar mysqldumpcon la --no-dataopción:

mysqldump -u user -h localhost --no-data -p database > database.sql
onteria_
fuente
44
Me sorprende que esta no sea la respuesta aceptada a pesar de haber sido publicada diez segundos antes y ser más completa si no es idéntica a la respuesta aceptada.
user5532169
1
@ zypA13510, aparentemente diez segundos pueden ser una diferencia de 749 votos a favor.
emallove
17

También puede extraer una tabla individual con la --no-dataopción

mysqldump -u user -h localhost --no-data -p database tablename > table.sql
PodTech.io
fuente
6

Puede usar la opción -d con el comando mysqldump

mysqldump -u root -p -d databasename > database.sql
Rahul Chipad
fuente
6

Dumping sin usar la salida.

mysqldump --no-data <database name> --result-file=schema.sql
Anders B
fuente
4

Sin embargo, tenga en cuenta que la opción --no-data no incluirá la definición de vista. Entonces, si tenía una vista como la siguiente, cree la vista v1, seleccione a. idAS id, a. created_dateAS created_date de t1; con la opción --no-data, la definición de vista cambiará a la siguiente vista de creación v1 seleccione 1 AS id, 1 AScreated_date

Mamta Satoor
fuente
2

En caso de que esté utilizando IntelliJ, puede habilitar la vista Base de datos (Ver -> Ventana Herramientas -> Base de datos)

Dentro de esa vista, conéctese a su base de datos. Luego puede hacer clic derecho en la base de datos y seleccionar "Copiar DDL". Otros IDEs pueden ofrecer una función similar.

IntelliJ DDL

Ant1Zykl0n
fuente
2
Lo intenté, no contiene ningún desencadenante (y Dios sabe qué más no)
phil294
2

Si desea volcar todas las tablas de todas las bases de datos y sin datos (solo bases de datos y estructuras de tablas) puede usar:

mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql

Esto producirá un archivo .sql que puede cargar en un servidor mysql para crear una nueva base de datos. Los casos de uso para esto no son muchos en un entorno de producción, pero lo hago semanalmente para restablecer los servidores que están vinculados a sitios web de demostración, por lo que, independientemente de lo que hagan los usuarios durante la semana, los domingos por la noche, todo vuelve a "nuevo": )

Javier Larroulet
fuente
1

Para obtener el script de creación de una tabla individual:
- seleccione toda la tabla (con la tecla Mayús)
- simplemente haga clic derecho en el nombre de la tabla y haga clic en Copiar al portapapeles> Crear declaración.

mias
fuente
0

shell> mysqldump --no-data --routines --events test> dump-defs.sql

usuario13012757
fuente
1
Bienvenido a StackOverflow. Podría dar una gran respuesta a esto si proporciona un poco más de información y restricciones.
Janhoo
0

Agregue las opciones --rutinas y --eventos para incluir también la rutina almacenada y las definiciones de eventos

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql
Ranga
fuente
-1

Puedes tomar usando el siguiente método

mysqldump -d <database name> > <filename.sql> // -d : without data

Espero que te ayude

Fénix
fuente
66
Esta respuesta no agrega nada que otra respuesta aún no haya dicho.
Daniel