Schemat eksportu MySql bez danych

490

Korzystam z bazy danych MySql z programem Java, teraz chcę przekazać program komuś innemu.

Jak wyeksportować strukturę bazy danych MySql bez danych, tylko strukturę?

Darth Blue Ray
źródło

Odpowiedzi:

960

Możesz to zrobić za pomocą --no-dataopcji mysqldump

mysqldump -u root -p --no-data dbname > schema.sql
Daric
źródło
11
IMHO mysqldumpto najlepsza odpowiedź. MySQL Administrator został porzucony, a MySQL Workbench jest nadal dość wadliwy.
Álvaro González
49
Zastanów się również nad skorzystaniem z tej --single-transactionopcji, jeśli nie chcesz lub nie możesz wykonywać blokad tabel.
Jim
47
-d to w skrócie - brak danych.
marstone
36
Zastanów się również nad dodaniem --routines, jeśli Twoja baza danych ma zapisane procedury / funkcje
crafterm
15
Domyślnie nie obejmuje to CREATE DATABASEpolecenia. Aby dołączyć, należy wymienić dbnamez --databases dbname(skrót: -B dbname). Następnie, aby zaimportować na inny serwer, użyjmysql -u root -p < schema.sql
Sean
88

Tak, możesz użyć mysqldumpz --no-dataopcją:

mysqldump -u user -h localhost --no-data -p database > database.sql
onteria_
źródło
4
Dziwi mnie, że nie jest to akceptowana odpowiedź, mimo że została opublikowana dziesięć sekund wcześniej i jest bardziej kompletna, jeśli nie identyczna z zaakceptowaną odpowiedzią.
user5532169,
1
@ zypA13510, najwyraźniej dziesięć sekund może być różnicą 749 głosów pozytywnych.
emallove
17

możesz również wyodrębnić indywidualny stół z --no-dataopcją

mysqldump -u user -h localhost --no-data -p database tablename > table.sql
PodTech.io
źródło
6

Możesz użyć opcji -d z poleceniem mysqldump

mysqldump -u root -p -d databasename > database.sql
Rahul Chipad
źródło
6

Zrzut bez użycia wyjścia.

mysqldump --no-data <database name> --result-file=schema.sql
Anders B.
źródło
4

Uważaj jednak, że opcja --no-data nie będzie zawierać definicji widoku. Więc jeśli masz widok podobny do następującego, utwórz widok v1 wybierz a. idAS id, a. created_dateAS created_date od t1; z opcją --no-data definicja widoku zostanie zmieniona na następującą Utwórz widok v1 wybierz 1 AS id, 1 AScreated_date

Mamta Satoor
źródło
2

W przypadku korzystania z IntelliJ możesz włączyć widok bazy danych (Widok -> Okno narzędzi -> Baza danych)

Wewnątrz tego widoku połącz się z bazą danych. Następnie możesz kliknąć bazę danych prawym przyciskiem myszy i wybrać „Kopiuj DDL”. Inne IDE mogą oferować podobną funkcję.

IntelliJ DDL

Ant1Zykl0n
źródło
2
Spróbowałem, nie zawiera żadnych wyzwalaczy (a Bóg wie, czego jeszcze nie ma)
phil294
2

Jeśli chcesz zrzucić wszystkie tabele ze wszystkich baz danych i bez danych (tylko struktury baz danych i tabel), możesz użyć:

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

Spowoduje to utworzenie pliku .sql, który można załadować na serwer mysql w celu utworzenia nowej bazy danych. Przypadków użycia tego nie jest wiele w środowisku produkcyjnym, ale robię to co tydzień, aby zresetować serwery, które są połączone ze stronami demonstracyjnymi, więc cokolwiek użytkownicy robią w ciągu tygodnia, w niedzielne noce wszystko wraca do „nowego”: )

Javier Larroulet
źródło
1

Aby uzyskać skrypt tworzenia pojedynczej tabeli:
- wybierz całą tabelę (z klawiszem Shift)
- po prostu kliknij prawym przyciskiem myszy nazwę tabeli i kliknij Kopiuj do schowka> Utwórz instrukcję.

mias
źródło
0

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

użytkownik13012757
źródło
1
Witamy w StackOverflow. Możesz dać z tego świetną odpowiedź, jeśli podasz trochę więcej informacji i ograniczeń.
Janhoo
0

Dodaj opcje --routines i --events, aby uwzględnić również przechowywane procedury i definicje zdarzeń

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql
Ranga
źródło
-1

Możesz wziąć za pomocą następującej metody

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

Mam nadzieję, że to ci pomoże

Feniks
źródło
6
Ta odpowiedź nie dodaje niczego, czego inna odpowiedź jeszcze nie powiedziała.
Daniel