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ę?

Odpowiedzi:


960

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

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

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

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

6

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

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

6

Zrzut bez użycia wyjścia.

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

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



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


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


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ę.


0

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


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

-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


6
Ta odpowiedź nie dodaje niczego, czego inna odpowiedź jeszcze nie powiedziała.
Daniel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.