如何复制 MySQL/MariaDB 中的表
备份同一数据库中的表
本文将告诉您如何在 MySQL/MariaDB 命令行界面中创建表的副本。通常,数据库和表的备份保存到文件中,但让我们考虑一下这样的情况:您需要在 MySQL/MariaDB 命令行界面中复制或克隆同一或另一个数据库中表的数据、结构和索引。
另请参阅:如何在 phpMyAdmin 中复制表格
克隆表是在应用程序开发和调试期间制作备份副本的便捷方法。如果应用程序损坏了表,则可以很容易地删除该表,然后从位于同一数据库中的备份恢复该表。
当然,为了在 DBMS 发生故障时进行备份,您需要将表和数据库的副本保存到应存储在其他介质上的文件中。
如何将 MySQL/MariaDB 中的表复制到同一数据库
让我们考虑两个选择:
- 您需要复制表结构、其数据以及索引和触发器
- 您只需复制表结构及其数据
第一个选项允许您创建表的完整克隆。在第二种情况下,复制表的数据和结构也将与原始表匹配——此选项适合大多数用户。
因此,要复制表(包括其结构、数据、索引和触发器),请运行以下两个查询:
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;