MySQL-Exportschema ohne Daten

491

Ich verwende eine MySQL-Datenbank mit einem Java-Programm. Jetzt möchte ich das Programm jemand anderem geben.

Wie exportiere ich die MySql-Datenbankstruktur ohne die darin enthaltenen Daten, nur die Struktur?

Darth Blue Ray
quelle

Antworten:

962

Sie können mit der --no-dataOption mit dem Befehl mysqldump arbeiten

mysqldump -u root -p --no-data dbname > schema.sql
Daric
quelle
11
IMHO, mysqldumpist die beste Antwort. MySQL Administrator wird aufgegeben und MySQL Workbench ist immer noch ziemlich fehlerhaft.
Álvaro González
49
Verwenden --single-transactionSie diese Option auch, wenn Sie keine Tabellensperren durchführen möchten oder können.
Jim
47
-d ist kurz --no-data.
Marstone
36
Erwägen Sie auch das Hinzufügen von --routinen, wenn Ihre Datenbank Prozeduren / Funktionen gespeichert hat
crafterm
15
Standardmäßig ist der CREATE DATABASEBefehl nicht enthalten . Enthalten, ersetzen dbnamemit --databases dbname(Stenografie: -B dbname). Um dann auf einen anderen Server zu importieren, verwenden Siemysql -u root -p < schema.sql
Sean
88

Ja, Sie können mysqldumpmit der --no-dataOption verwenden:

mysqldump -u user -h localhost --no-data -p database > database.sql
onteria_
quelle
4
Ich bin überrascht, dass dies nicht die akzeptierte Antwort ist, obwohl sie zehn Sekunden zuvor veröffentlicht wurde und vollständiger ist, wenn sie nicht mit der akzeptierten Antwort identisch ist.
user5532169
1
@ zypA13510, anscheinend können zehn Sekunden eine Differenz von 749 Upvotes sein.
Emallove
17

Mit der --no-dataOption können Sie auch eine einzelne Tabelle extrahieren

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

Sie können die Option -d mit dem Befehl mysqldump verwenden

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

Dumping ohne Ausgabe.

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

Beachten Sie jedoch, dass die Option --no-data die Ansichtsdefinition nicht enthält. Wenn Sie also eine Ansicht wie die folgende haben, wählen Sie Ansicht v1 a. idAS id, a. created_dateAS created_date von t1; Mit der Option --no-data wird die Ansichtsdefinition in die folgende Ansicht geändert: v1 erstellen, 1 AS id, 1 AS auswählencreated_date

Mamta Satoor
quelle
2

Wenn Sie IntelliJ verwenden, können Sie die Datenbankansicht aktivieren (Ansicht -> Werkzeugfenster -> Datenbank).

Stellen Sie in dieser Ansicht eine Verbindung zu Ihrer Datenbank her. Dann können Sie mit der rechten Maustaste auf die Datenbank klicken und "DDL kopieren" auswählen. Andere IDEs bieten möglicherweise eine ähnliche Funktion.

IntelliJ DDL

Ant1Zykl0n
quelle
2
Ich habe es versucht, es enthält keine Auslöser (und Gott weiß, was sonst nicht)
phil294
2

Wenn Sie alle Tabellen aus allen Datenbanken und ohne Daten (nur Datenbank- und Tabellenstrukturen) sichern möchten, können Sie Folgendes verwenden:

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

Dadurch wird eine SQL-Datei erstellt, die Sie auf einen MySQL-Server laden können, um eine neue Datenbank zu erstellen. Anwendungsfälle hierfür gibt es in einer Produktionsumgebung nicht viele, aber ich mache dies wöchentlich, um Server zurückzusetzen, die mit Demo-Websites verknüpft sind. Was auch immer die Benutzer während der Woche tun, an Sonntagabenden wird alles auf "neu" zurückgesetzt: )

Javier Larroulet
quelle
1

So rufen Sie das Erstellungsskript einer einzelnen Tabelle ab:
- Wählen Sie die gesamte Tabelle aus (mit Umschalttaste).
Klicken Sie einfach mit der rechten Maustaste auf den Tabellennamen und klicken Sie auf In Zwischenablage kopieren> Anweisung erstellen.

Mias
quelle
0

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

user13012757
quelle
1
Willkommen bei StackOverflow. Sie könnten daraus eine gute Antwort machen, wenn Sie ein wenig mehr Informationen und Einschränkungen geben.
Janhoo
0

Fügen Sie die Optionen --routines und --events hinzu, um auch gespeicherte Routine- und Ereignisdefinitionen einzuschließen

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

Sie können mit der folgenden Methode nehmen

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

Hoffe es wird dir helfen

Phönix
quelle
6
Diese Antwort fügt nichts hinzu, was andere Antworten noch nicht gesagt haben.
Daniel