Schema di esportazione di MySql senza dati


492

Sto usando un database MySql con un programma Java, ora voglio dare il programma a qualcun altro.

Come esportare la struttura del database MySql senza i dati in essa contenuti, solo la struttura?

Risposte:


963

Puoi fare con l' --no-dataopzione con il comando mysqldump

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

11
IMHO, mysqldumpè la risposta migliore. L'amministratore di MySQL viene abbandonato e MySQL Workbench è ancora piuttosto difettoso.
Álvaro González,

49
Considera anche di utilizzare l' --single-transactionopzione se non vuoi o non puoi fare i blocchi della tabella.
Jim,

47
-d è --no-data in breve.
Marstone,

36
Prendi anche in considerazione l'aggiunta di --routines se il tuo database ha stored procedure / funzioni
crafterm

15
Per impostazione predefinita, questo non include il CREATE DATABASEcomando. Per includere, sostituire dbnamecon --databases dbname(stenografia:) -B dbname. Quindi per importare su un altro server, utilizzaremysql -u root -p < schema.sql
Sean il

88

Sì, puoi usare mysqldumpcon l' --no-dataopzione:

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

4
Sono sorpreso che questa non sia la risposta accettata nonostante sia stata pubblicata dieci secondi prima e sia più completa se non identica alla risposta accettata.
user5532169

1
@ zypA13510, apparentemente dieci secondi possono essere una differenza di 749 voti.
emallove

17

puoi anche estrarre una singola tabella con l' --no-dataopzione

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

6

È possibile utilizzare l'opzione -d con il comando mysqldump

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

6

Dumping senza utilizzare l'output.

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

4

Attenzione però che l'opzione --no-data non includerà la definizione della vista. Quindi se hai una vista come quella che segue crea la vista v1 seleziona a. idAS id, a. created_dateAS created_date da t1; con l'opzione --no-data, la definizione della vista verrà modificata in seguito alla vista di creazione v1 selezionare 1 AS id, 1 AScreated_date



2

Nel caso in cui si utilizzi IntelliJ, è possibile abilitare la vista Database (Visualizza -> Finestra Strumenti -> Database)

All'interno di quella vista connettiti al tuo database. Quindi è possibile fare clic con il pulsante destro del mouse sul database e selezionare "Copia DDL". Altri IDE possono offrire una funzione simile.

IntelliJ DDL


2
Ci ho provato, non contiene trigger (e dio sa cos'altro)
phil294

2

Se si desidera eseguire il dump di tutte le tabelle da tutti i database e senza dati (solo strutture di database e tabelle) è possibile utilizzare:

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

Questo produrrà un file .sql che puoi caricare su un server mysql per creare un nuovo database. I casi d'uso per questo non sono molti in un ambiente di produzione, ma lo faccio su base settimanale per ripristinare i server collegati a siti Web dimostrativi, quindi qualunque cosa facciano gli utenti durante la settimana, la domenica tutto torna a "nuovo": )


1

Per ottenere lo script di creazione di una singola tabella:
- seleziona tutta la tabella (con il tasto Maiusc)
- fai semplicemente clic con il tasto destro sul nome della tabella e fai clic su Copia negli Appunti> Crea istruzione.


0

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


1
Benvenuto in StackOverflow. Potresti dare un'ottima risposta a questo se fornissi un po 'più di informazioni e vincoli.
Janhoo

0

Aggiungi le opzioni --routines e --events per includere anche le definizioni di routine ed eventi memorizzate

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

-1

Puoi prendere usando il seguente metodo

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

Spero che ti aiuti


6
Questa risposta non aggiunge nulla che l'altra risposta non abbia già detto.
Daniel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.