Schéma d'exportation MySql sans données


492

J'utilise une base de données MySql avec un programme Java, maintenant je veux donner le programme à quelqu'un d'autre.

Comment exporter la structure de la base de données MySql sans les données qu'elle contient, juste la structure?

Réponses:


963

Vous pouvez le faire avec l' --no-dataoption avec la commande mysqldump

mysqldump -u root -p --no-data dbname > schema.sql

11
À mon humble avis, mysqldumpest la meilleure réponse. L'administrateur MySQL est abandonné et MySQL Workbench est encore assez bogué.
Álvaro González

49
Pensez également à utiliser l' --single-transactionoption si vous ne voulez pas ou ne pouvez pas faire de verrous de table.
Jim

47
-d est --no-data pour faire court.
marstone

36
Pensez également à ajouter --routines si votre base de données a des procédures / fonctions
stockées

15
Par défaut, cela n'inclut pas la CREATE DATABASEcommande. Pour inclure, remplacez dbnamepar --databases dbname(raccourci:) -B dbname. Ensuite, pour importer sur un autre serveur, utilisezmysql -u root -p < schema.sql
Sean

88

Oui, vous pouvez utiliser mysqldumpl' --no-dataoption:

mysqldump -u user -h localhost --no-data -p database > database.sql

4
Je suis surpris que ce ne soit pas la réponse acceptée bien qu'elle ait été publiée dix secondes plus tôt et qu'elle soit plus complète sinon identique à la réponse acceptée.
user5532169

1
@ zypA13510, apparemment dix secondes peuvent être une différence de 749 votes positifs.
emallove

17

vous pouvez également extraire une table individuelle avec l' --no-dataoption

mysqldump -u user -h localhost --no-data -p database tablename > table.sql

6

Vous pouvez utiliser l'option -d avec la commande mysqldump

mysqldump -u root -p -d databasename > database.sql

6

Dump sans utiliser de sortie.

mysqldump --no-data <database name> --result-file=schema.sql

4

Attention cependant, l'option --no-data n'inclura pas la définition de la vue. Donc, si vous aviez une vue comme la création suivante, sélectionnez la vue v1 a. idAS id, a. created_dateAS à created_date partir de t1; avec l'option --no-data, la définition de la vue sera remplacée par la création suivante de la vue v1 sélectionnez 1 AS id, 1 AScreated_date



2

Si vous utilisez IntelliJ, vous pouvez activer la vue Base de données (Affichage -> Fenêtre Outils -> Base de données)

Dans cette vue, connectez-vous à votre base de données. Ensuite, vous pouvez cliquer avec le bouton droit sur la base de données et sélectionner "Copier DDL". D'autres IDE peuvent offrir une fonction similaire.

IntelliJ DDL


2
Je l'ai essayé, il ne contient aucun déclencheur (et Dieu sait quoi d'autre pas)
phil294

2

Si vous souhaitez vider toutes les tables de toutes les bases de données et sans données (uniquement les structures de base de données et de table), vous pouvez utiliser:

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

Cela produira un fichier .sql que vous pourrez charger sur un serveur mysql pour créer une nouvelle base de données. Les cas d'utilisation pour cela ne sont pas nombreux dans un environnement de production, mais je le fais chaque semaine pour réinitialiser les serveurs qui sont liés aux sites de démonstration, donc quoi que les utilisateurs fassent pendant la semaine, le dimanche soir, tout revient à "nouveau": )


1

Pour obtenir le script de création d'une table individuelle:
- sélectionnez toute la table (avec la touche Maj)
- faites un clic droit sur le nom de la table et cliquez sur Copier dans le presse-papiers> Créer une déclaration.


0

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


1
Bienvenue dans StackOverflow. Vous pourriez faire une excellente réponse à cela si vous donnez un peu plus d'informations et de contraintes.
janvier

0

Ajoutez les options --routines et --events pour inclure également les définitions de routine et d'événement stockées

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

-1

Vous pouvez utiliser la méthode suivante

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

J'espère que cela vous aidera


6
Cette réponse n'ajoute rien que d'autres réponses n'ont pas déjà dit.
Daniel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.