技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

在 MySQL 中克隆表

dbmsmysqldata analysis

在某些情况下,例如备份数据和复制生产数据以进行测试,将数据从现有表复制到新表非常有用。借助 MySQL 复制或克隆表功能,我们可以制作现有表的精确副本,包括其结构、索引、约束、默认值等。在表发生故障时备份数据等情况下,将数据从现有数据库复制到新表非常有用。

您可以使用 CREATE TABLE 和 SELECT 查询将数据从一个表复制到另一个表,如下所示 −

existing_table

EN

NAME

EMAIL

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

EMAIL

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 数据库中创建和修改表的适当权限。此外,请注意表之间可能存在的任何数据约束或关系,因为不加区分地复制数据可能会导致数据不一致和错误。


相关文章