在 MySQL 中克隆表
在某些情况下,例如备份数据和复制生产数据以进行测试,将数据从现有表复制到新表非常有用。借助 MySQL 复制或克隆表功能,我们可以制作现有表的精确副本,包括其结构、索引、约束、默认值等。在表发生故障时备份数据等情况下,将数据从现有数据库复制到新表非常有用。
您可以使用 CREATE TABLE 和 SELECT 查询将数据从一个表复制到另一个表,如下所示 −
existing_table
EN |
NAME |
|
---|---|---|
001 |
hardik |
hardi@gmail.com |
002 |
Ajites |
ajit@mail.com |
003 |
Pushpa |
tears@mail.com |
CREATE TABLE new_table SELECT col, col2, col3 FROM existing_table;
Construct TABLE 命令指示 MySQL 首先创建一个具有指定名称的新表。SELECT 语句的结果集决定了新表的结构。然后,MySQL 将 SELECT 命令中的数据添加到新表中。
您可以使用 SELECT 语句中的 WHERE 子句将现有表中的部分数据复制到新表中,如下所示 −
CREATE TABLE new_table SELECT col1, col2, col3 FROM existing_table WHERE conditions;
如您所见,上述语句仅复制了表及其内容。它不会复制与表相关的任何其他数据库对象,例如触发器、主键约束、外键约束和索引。
使用以下语句从一个表及其所有依赖对象复制数据 −
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table; INSERT new_table SELECT * FROM existing_table;
需要执行两个语句。第一行通过复制现有表,生成一个新表,称为新表。第二行语句将当前表中的数据插入到新表中。
new_table
EN |
NAME |
|
---|---|---|
001 |
hardik |
hardi@gmail.com |
002 |
Ajites |
ajit@mail.com |
003 |
Pushpa |
tears@mail.com |
MySQL 将表复制到另一个数据库
有时,您想将表复制到另一个数据库。在这种情况下,您可以使用以下语句−
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
通过从源数据库 (source dB) 复制当前表 (现有表),第一行在目标数据库 (destination dB) 中生成一个新表。
第二条语句将数据从源数据库的现有表传输到目标数据库的新表。
前面提到的示例也适用于将表克隆到另一个数据库。
结论
无论选择哪种方法,重要的是确保您具有在 MySQL 数据库中创建和修改表的适当权限。此外,请注意表之间可能存在的任何数据约束或关系,因为不加区分地复制数据可能会导致数据不一致和错误。