Как сгенерировать DDL для всех таблиц в базе данных в MySQL

Как сгенерировать DDL сразу для всех таблиц в базе данных MySQL. Я знаю, что следующий запрос выведет DDL для таблицы. Но я хочу DDL всех таблиц сразу, потому что у меня есть сотни таблиц в моей базе данных.

show create table <database name>.<table name>;

Например:

show create table projectdb.customer_details; 

Приведенный выше запрос приведет к DDL таблицы customer_details.

Я использую MySQL с рабочей средой MySQL в ОС Windows.


person sumit    schedule 06.07.2011    source источник


Ответы (3)


Вы можете сделать это с помощью утилиты командной строки mysqldump:

mysqldump -d -u <username> -p<password> -h <hostname> <dbname>

Опция -d означает "без данных".

person AJ.    schedule 06.07.2011
comment
Я получаю сообщение об ошибке. Вот моя команда: mysqldump -d -u root -p pps -h 127.0.0.1 shopping_store; - person Pargat; 30.04.2013
comment
Какую ошибку вы получаете? Вероятно, это может быть из-за пробела между -p и вашим паролем. - person Swapnil; 23.08.2013
comment
Проголосовал. В вашем ответе просто синтаксическая ошибка. Опция -p не принимает аргумент, поэтому, если вы попытаетесь написать свой пароль после этой опции, mysqldump интерпретирует его как имя базы данных. Просто используйте его без <password>, он будет запрошен после выполнения команды. - person tftdias; 10.12.2014
comment
Интересно, это могло измениться (ответ был написан в 2011 году). Раньше можно было поставить пароль в командной строке. - person AJ.; 11.12.2014
comment
для опции использования пароля: --password=‹pass› - person sancheese; 12.04.2017
comment
mysqldump Ver 10.16 Distrib 10.1.23-MariaDB, for Linux (x86_64) работает с синтаксисом ответа. - person Zane; 25.05.2017
comment
Исправлена ​​синтаксическая ошибка, команда может выглядеть так: mysqldump -d -u root -p -h 10.216.12.11 My_Schema › ./MySchema_DB_DDLs_Dump.sql - person Akshay Lokur; 09.11.2017

@tftdias выше сделал частично правильный комментарий:

Проблема заключалась в пробеле между -p и «pps» в качестве пароля. Вы можете абсолютно свободно ввести свой пароль в командной строке. Вы просто не должны, как общее правило безопасности. В Linux при правильной настройке вы можете добавить пробел («») ПЕРЕД первым символом в вашей командной строке, и эта строка не войдет в «историю». Я бы порекомендовал, чтобы всякий раз, когда вы вводите свой пароль открытым текстом (не делайте этого!), вы, по крайней мере, сначала ставили пробел, чтобы пароль не был в видимой истории.

person John Toups    schedule 14.01.2016

Вы должны получить список всех таблиц в базе данных, а затем запустить этот запрос. проверьте эту ссылку, чтобы получить список всех таблиц: http://php.net/manual/en/function.mysql-list-tables.php

person Ovais Khatri    schedule 06.07.2011
comment
Эта функция устарела, начиная с PHP 5.5. Вместо этого они рекомендуют использовать SHOW TABLES FROM sometable (хотя я думаю, что они имели в виду somedb). - person Ben; 17.09.2013