复制一个MySQL表,索引和数据

如何复制/克隆/复制一个MySQL表的数据,结构和索引到一个新的?

这是我迄今为止发现的。

这将复制数据和结构,但不是索引:

create table {new_table} select * from {old_table}; 

这将复制结构和索引,但不复制数据:

 create table {new_table} like {old_table}; 

要使用索引和触发器进行复制,请执行以下2个查询:

 CREATE TABLE newtable LIKE oldtable; INSERT newtable SELECT * FROM oldtable; 

复制只是结构和数据使用这一个:

 CREATE TABLE tbl_new AS SELECT * FROM tbl_old; 

我之前问过这个问题:

复制包含索引的MySQL表

除了上面的解决scheme之外,您可以使用AS将它在一行中。

 CREATE TABLE tbl_new AS SELECT * FROM tbl_old; 

我发现了相同的情况,我采取的方法如下:1.执行SHOW CREATE TABLE:这将为您要克隆的表提供Create Table语法2.通过更改表名称来运行CREATE TABLE查询克隆表。

这将创build您想要与索引一起克隆的表的确切副本。 你唯一需要的是重新命名索引(如果需要的话)。

MySQL的方式

 CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes; 

以上尝试了解决scheme之后。 我想出了我自己的方式。

我的解决scheme有点手动,需要DBMS。

首先导出数据。

第二次打开导出数据。

用新的表名replace旧的表名。

第四更改数据中的所有触发器名称(我使用mysql,当我不更改触发器名称时显示错误)

第五步将编辑后的sql数据导入到数据库中。

转到phpMyAdmin并select您的原始表,然后select“ 复制表到(database.table) ”区域中的“ 操作 ”选项卡select要复制的数据库,并为您的新表添加一个名称。 复制表 – phyMyAdmin截图

对于MySQL

 CREATE TABLE newtable LIKE oldtable ; INSERT newtable SELECT * FROM oldtable ; 

对于MSSQL使用MyDatabase

 Select * into newCustomersTable from oldCustomersTable; 

这个SQL用于复制表,这里oldCustomersTable的内容将被复制到newCustomersTable
确保数据库中不存在newCustomersTable