复制包含索引的 MySQL 表

Posted

技术标签:

【中文标题】复制包含索引的 MySQL 表【英文标题】:Copy a MySQL table including indexes 【发布时间】:2011-01-25 19:54:28 【问题描述】:

我可以复制一个 mysql 表来创建一个新表:

CREATE TABLE newtable SELECT * FROM oldtable

这可行,但索引不会复制到新表中。如何复制包含索引的表?

【问题讨论】:

indexes not create vs prevent the indexes 模棱两可,你想做什么? Duplicating a MySQL table, indexes and data的可能重复 @luchaninov 该问题的答案提到了这个问题。这是一个无限循环。 【参考方案1】:
CREATE TABLE newtable LIKE oldtable; 
INSERT INTO newtable SELECT * FROM oldtable;

【讨论】:

另外,create table newtable like oldtable; 复制列数据类型,因此您的记录不会被强制转换为意外的数据类型。 使用这个我发现 NotNull 和 PrimaryKey 属性被删除了 - 对此有什么想法吗? @AndrewSea***,因为我已经尝试过 PrimaryKey 并且 NotNull 也会被保存。 要复制没有索引,只需使用结构和数据CREATE TABLE tbl_new AS SELECT * FROM tbl_old 插入新表 SELECT * FROM oldtable;必须是 INSERT INTO newtable SELECT * FROM oldtable;

以上是关于复制包含索引的 MySQL 表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 复制表

MySQL 复制表:如何准确无误的创建复制表?

雷林鹏分享:MySQL 复制表

吴裕雄 26-MySQL 复制表

mysql复制表结构create table as和like的区别

复制 MySQL 表、索引和数据