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?

Antworten:


962

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

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

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

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

6

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

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

6

Dumping ohne Ausgabe.

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

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



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


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: )


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.


0

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


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

-1

Sie können mit der folgenden Methode nehmen

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

Hoffe es wird dir helfen


6
Diese Antwort fügt nichts hinzu, was andere Antworten noch nicht gesagt haben.
Daniel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.