Создайте MySQL-запрос для создания таблицы из существующей таблицы

У меня есть довольно большая и сложная таблица в базе данных MySQL, которая была бы больна, чтобы создать запрос для ручного воссоздания, если что-то пошло не так.

Есть ли какой-нибудь способ получить MySQL или какой-либо другой инструмент / script, который я могу использовать для автоматического создания запроса, который воссоздает структуру таблицы?

В идеале, если вы предложили инструмент / script, это было бы для Linux

Ответ 1

SHOW CREATE TABLE `thetable`;

Также любой способ резервного копирования, например mysqldump, должен предоставить вам возможность сохранять структуру, а также данные.

Ответ 2

из http://dev.mysql.com/doc/refman/5.0/en/create-table.html

чтобы создать пустую таблицу на основе определения другой таблицы, включая любые атрибуты столбца и индексы, определенные в исходной таблице:

CREATE TABLE new_tbl LIKE orig_tbl;

Ответ 4

выполните следующие запросы:

Если вы хотите скопировать структуру таблицы с помощью первичного ключа, внешнего ключа и сдерживает данные...

CREATE TABLE newtableName LIKE oldTableName; 
INSERT newtableName SELECT * FROM oldTableName;

Ответ 5

вы можете экспортировать структуру таблицы из phpmyadmin в файл sql...

Ответ 6

SHOW CREATE TABLE `table_name`;

Ответ 7

Я определенно согласен с другими людьми:
с mysqldump вы получаете дамп вашей таблицы (опция --tables), допустим, dumpMyTable.sql
затем, если вы хотите загрузить этот дамп в новую схему:

mysql -uuser_name -ppassword MyNewSchema < dumpMyTable.sql

если вы хотите загрузить его в той же схеме, но в новой таблице вам нужно будет отредактировать файл dumpMyTable.sql и вручную изменить имя таблицы. Если файл дампа очень велик, я рекомендую использовать команду "sed"

Ответ 8

Вы можете использовать SqlYog для этой цели. Решение находится всего в двух кликах от этого инструмента. Для этой цели вы можете использовать меню DataBase. Вы также можете скопировать только схему или все данные и оба на разные серверы.

Ответ 9

CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1 =0