网站搜索

如何复制 MySQL/MariaDB 中的表


备份同一数据库中的表

本文将告诉您如何在 MySQL/MariaDB 命令行界面中创建表的副本。通常,数据库和表的备份保存到文件中,但让我们考虑一下这样的情况:您需要在 MySQL/MariaDB 命令行界面中复制或克隆同一或另一个数据库中表的数据、结构和索引。

另请参阅:如何在 phpMyAdmin 中复制表格

克隆表是在应用程序开发和调试期间制作备份副本的便捷方法。如果应用程序损坏了表,则可以很容易地删除该表,然后从位于同一数据库中的备份恢复该表。

当然,为了在 DBMS 发生故障时进行备份,您需要将表和数据库的副本保存到应存储在其他介质上的文件中。

如何将 MySQL/MariaDB 中的表复制到同一数据库

让我们考虑两个选择:

  1. 您需要复制表结构、其数据以及索引和触发器
  2. 您只需复制表结构及其数据

第一个选项允许您创建表的完整克隆。在第二种情况下,复制表的数据和结构也将与原始表匹配——此选项适合大多数用户。

因此,要复制表(包括其结构、数据、索引和触发器),请运行以下两个查询:


CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;

要仅克隆表结构和数据,请运行以下单个查询:


CREATE TABLE new_table AS SELECT * FROM old_table;

在以下示例中,我们在同一数据库中创建该表的副本。

选择要使用的数据库:


USE TestDB;

显示表列表:


SHOW TABLES;

TestTABLE 表复制到名为 TestTABLE_backup 的表中:


CREATE TABLE TestTABLE_backup AS SELECT * FROM TestTABLE;

一切准备就绪,现在让我们确保表已实际创建:


SHOW TABLES;

如何将MySQL/MariaDB中的表复制到另一个数据库

首先,如果数据库不存在,则创建一个。

要将表(包括其结构、数据、索引和触发器)复制到新数据库,请执行以下两个查询:


CREATE TABLE new_db.new_table LIKE old_db.old_table;
INSERT INTO new_db.new_table SELECT * FROM old_db.old_table;

要仅克隆表的结构和数据,请执行以下单个查询:


CREATE TABLE new_db.new_table AS SELECT * FROM old_db.old_table;

我们来看一个具体的例子。

创建一个名为 TestDB_backup 的新数据库:


CREATE DATABASE TestDB_backup;

TestTABLE 表从 TestDB 数据库克隆到 TestDB_backup 数据库:


CREATE TABLE TestDB_backup.TestTABLE AS SELECT * FROM TestDB.TestTABLE;

一切准备就绪,现在让我们确保表已实际创建:


SHOW TABLES in TestDB_backup;