2011-07-06 28 views
32

Cómo generar el DDL para todas las tablas en una base de datos de MySQL a la vez. Sé que la siguiente consulta arrojará el DDL para una tabla. Pero quiero DDL de todas las tablas a la vez porque tengo cientos de tablas en mi base de datos.Cómo generar DDL para todas las tablas en una base de datos en MySQL

show create table <database name>.<table name>; 

Por ejemplo:

show create table projectdb.customer_details; 

La consulta anterior dará lugar a DDL de customer_details mesa.

estoy usando MySQL con MySQL Workbench en el sistema operativo Windows.

Respuesta

57

Puede hacerlo utilizando la utilidad de línea de comando mysqldump:

mysqldump -d -u <username> -p<password> -h <hostname> <dbname> 

La opción -d significa "sin datos".

+0

Me está llegando el error. Aquí está mi comando: mysqldump -d -u root -p pps -h 127.0.0.1 shopping_store; – Pargat

+4

¿Cuál es el error que está recibiendo? Probablemente sea por el espacio entre "-p" y su contraseña. – Swapnil

+3

Upvoted. Solo hay un error de sintaxis en tu respuesta. La opción '-p' no acepta un argumento, por lo que si intenta escribir su contraseña después de esta opción, mysqldump lo interpretará como el nombre de la base de datos. Simplemente utilícelo sin '', se lo solicitará después de ejecutar el comando. – tftdias

-1

Debe obtener la lista de todas las tablas en la base de datos y luego ejecutar esta consulta. verificación de este enlace para obtener la lista de todas las tablas: http://php.net/manual/en/function.mysql-list-tables.php

+0

Esa función es obsoleta a partir de PHP 5.5. Recomiendan usar 'SHOW TABLES FROM tableable' en su lugar (creo que querían decir 'somedb'). – Ben

0

@tftdias anterior hizo un comentario que es parcialmente correcta:

La cuestión era el espacio entre el -p y 'pps' como contraseña. Puede absolutamente liberar el texto de su contraseña en la línea de comando. Simplemente no deberías, como una regla de seguridad general. En Linux, con una configuración adecuada, puede agregar un espacio ("") ANTES del primer carácter en su línea de comando, y esa línea no ingresará en 'historial'. Yo recomendaría que cada vez que borre la contraseña (¡no lo haga!), Al menos ponga un espacio primero para que la contraseña no esté en el historial visible.

Cuestiones relacionadas