web-dev-qa-db-fra.com

Comment générer DDL pour toutes les tables d'une base de données dans MySQL

Comment générer le DDL pour toutes les tables dans une base de données de MySQL à la fois. Je sais que la requête suivante produira le DDL pour une table. Mais je veux DDL de toutes les tables à la fois car j'ai des centaines de tables dans ma base de données.

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

Par exemple:

show create table projectdb.customer_details; 

La requête ci-dessus entraînera une DDL de customer_details table.

J'utilise MySQL avec MySQL Workbench sous Windows OS.

42
Sumit Gupta

Vous pouvez le faire en utilisant l'utilitaire de ligne de commande mysqldump:

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

Le -d option signifie "sans données".

73
AJ.

@tftdias ci-dessus a fait un commentaire partiellement correct:

Le problème était l'espace entre le -p et le "pps" comme mot de passe. Vous pouvez absolument saisir votre mot de passe sur la ligne de commande. Vous ne devriez tout simplement pas, en règle générale de sécurité. Sous linux, avec une configuration correcte, vous pouvez ajouter un espace ("") AVANT le premier caractère de votre ligne de commande, et cette ligne n'entrera pas dans "historique". Je recommande que chaque fois que vous effacez votre mot de passe (ne le faites pas!), Vous mettez au moins un espace en premier afin que le mot de passe ne soit pas dans l'historique visible.

0
John Toups