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?

Dark Blue Ray
la source

Réponses:

963

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

mysqldump -u root -p --no-data dbname > schema.sql
Daric
la source
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
onteria_
la source
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
PodTech.io
la source
6

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

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

Dump sans utiliser de sortie.

mysqldump --no-data <database name> --result-file=schema.sql
Anders B
la source
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

Mamta Satoor
la source
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

Ant1Zykl0n
la source
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": )

Javier Larroulet
la source
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.

mias
la source
0

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

user13012757
la source
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
Ranga
la source
-1

Vous pouvez utiliser la méthode suivante

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

J'espère que cela vous aidera

Phénix
la source
6
Cette réponse n'ajoute rien que d'autres réponses n'ont pas déjà dit.
Daniel