Схема експорту MySql без даних


490

Я використовую базу даних MySql з програмою Java, тепер я хочу надати програму комусь іншому.

Як експортувати структуру бази даних MySql без даних у ній, лише структуру?

Відповіді:


960

Ви можете зробити цей --no-dataпараметр за допомогою команди mysqldump

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

11
ІМХО, mysqldumpнайкраща відповідь. MySQL Administrator покинутий, а MySQL Workbench все ще досить баггі.
Альваро Гонсалес

49
Також розглянути можливість використання --single-transactionопції, якщо ви не хочете або не можете робити блоки столів.
Джим

47
-d є --недані короткі.
marstone

36
Також розгляньте можливість додавання -програм, якщо у вашій базі даних зберігаються процедури / функції
crafterm

15
За замовчуванням це не включає CREATE DATABASEкоманду. Щоб включити, замініть dbnameна --databases dbname(скорочення:) -B dbname. Потім для імпорту на інший сервер використовуйтеmysql -u root -p < schema.sql
Sean

88

Так, ви можете використовувати mysqldumpз --no-dataопцією:

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

4
Я здивований, що це не прийнята відповідь, незважаючи на те, що вона була розміщена на десять секунд раніше і є більш повною, якщо не тотожною прийнятою відповіддю.
користувач5532169

1
@ zypA13510, мабуть, десять секунд може бути різницею в 749 авансів.
emallove

17

Ви також можете витягти окрему таблицю з --no-dataможливістю

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

6

Ви можете використовувати опцію -d з командою mysqldump

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

6

Скидання без використання виводу.

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

4

Будьте обережні, хоча цей параметр --no-data не буде містити визначення перегляду. Отже, якщо у вас був такий вид, як наступний, створіть перегляд v1 select a. idAS id, a. created_dateAS created_date від t1; з опцією --no-data, визначення перегляду буде змінено на наступне створення view v1 select 1 AS id, 1 AScreated_date



2

Якщо ви використовуєте IntelliJ, ви можете увімкнути перегляд бази даних (Перегляд -> Вікно інструментів -> База даних)

Всередині цього виду підключіться до вашої бази даних. Потім ви можете клацнути правою кнопкою миші базу даних і вибрати "Скопіювати DDL". Інші ІДЕ можуть пропонувати подібну функцію.

IntelliJ DDL


2
Я спробував це, він не містить жодних тригерів (і Бог знає, що ще немає)
phil294,

2

Якщо ви хочете скинути всі таблиці з усіх баз даних і без даних (лише структури бази даних та таблиці), ви можете використовувати:

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

Це створить файл .sql, який можна завантажити на mysql-сервер, щоб створити свіжу базу даних. У виробничих умовах випадків використання для цього не так багато, але я роблю це щотижня, щоб скидати сервери, пов’язані з демонстраційними веб-сайтами, тому що б не зробили користувачі протягом тижня, у понеділок вночі все повертається до "нового": )


1

Щоб отримати скрипт створення окремої таблиці:
- виберіть всю таблицю (клавішею Shift)
- клацніть правою кнопкою миші назву таблиці та натисніть Copy to Clipboard> Create Statement.


0

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


1
Ласкаво просимо до StackOverflow. Ви можете з цього зробити чудову відповідь, якщо дасте трохи більше інформації та обмежень.
Janhoo

0

Додайте параметри --routines та --events, щоб також включити збережені визначення рутини та події

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

-1

Можна взяти за допомогою наступного методу

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

Сподіваюся, це допоможе вам


6
Ця відповідь нічого не додає, що інша відповідь ще не сказала.
Даніель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.