MySql схема экспорта без данных


492

Я использую базу данных MySql с Java-программой, теперь я хочу передать программу кому-то другому.

Как экспортировать структуру базы данных MySql без данных, только структура?

Ответы:


963

Вы можете сделать это с --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
Также рассмотрите возможность добавления --routines, если в вашей базе данных есть хранимые процедуры / функции
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
Я удивлен, что это не принятый ответ, несмотря на то, что он был опубликован на десять секунд раньше и является более полным, если не идентичным принятому ответу.
user5532169

1
@ zypA13510, очевидно, десять секунд могут быть разницей в 749 голосов.
Emallove

17

Вы также можете извлечь отдельную таблицу с --no-dataопцией

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



4

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



2

В случае, если вы используете IntelliJ, вы можете включить представление базы данных (Вид -> Окно инструментов -> База данных)

В этом представлении подключитесь к вашей базе данных. Затем вы можете щелкнуть правой кнопкой мыши базу данных и выбрать «Копировать DDL». Другие IDE могут предлагать аналогичную функцию.

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)
- просто щелкните правой кнопкой мыши имя таблицы и выберите «Копировать в буфер обмена»> «Создать оператор».


0

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


1
Добро пожаловать в StackOverflow. Вы могли бы сделать отличный ответ из этого, если вы дадите немного больше информации и ограничений.
января

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.