从现有表创建MySQL查询以创建新表

18

我在MySQL数据库中有一个非常大而且复杂的表格,如果需要手动构建查询来重新创建表格,那将是一件非常麻烦的事情。

是否有一种方法可以让MySQL或其他工具/脚本自动生成一个可以重新创建该表格结构的查询?

最好是针对Linux系统提供一个工具/脚本。

9个回答

25
SHOW CREATE TABLE `thetable`;

此外,任何备份方法,如mysqldump,都应该给您保存结构和数据的选项。


1
哇,就这么简单,要么是我的谷歌技能不足,要么是我的眼睛出了问题。 - Tristan
7
不要在甚至考虑阅读手册的可能性之前抱怨你的谷歌技能。 - user3850

19

15

执行以下查询:

如果您想复制具有主键、外键和约束条件及数据的表结构...

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

4

3
使用mysqldump命令导出数据表结构而非数据本身,命令格式为:mysqldump -u <用户名> -p<密码> <数据库名> --no-data --tables <表名> > <输出文件名>.ddl。 - rompetroll

3

创建一个新表new_table,该表的结构与old_table相同,但没有数据。可以使用 SELECT * FROM old_table WHERE 1 =0语句来完成这个任务。


创建一个具有相同结构的新表,但不会将主键复制到新表中。 - manishk

1
SHOW CREATE TABLE `table_name`;

0

你可以从phpmyadmin导出表的结构到一个sql文件中...


0

我完全同意其他人的观点:
使用mysqldump命令可以导出表格(选项--tables),比如说dumpMyTable.sql
然后如果你想要在新的模式下加载这个导出文件:

mysql -uuser_name -ppassword MyNewSchema < dumpMyTable.sql

如果您想在同一模式中加载它但是要创建一个新表,那么您需要编辑dumpMyTable.sql文件并手动更改表的名称。如果转储文件非常大,则建议使用"sed"命令。


0
你可以使用SqlYog来完成此操作。该工具仅需2个点击即可解决问题。您可以使用数据库菜单完成此操作。您还可以仅复制模式或全部数据,甚至到不同的服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接