MySQLi - 克隆表



可能存在需要表的確切副本的情況,而 CREATE TABLE ... SELECT 不適合您的目的,因為副本必須包含相同的索引、預設值等。

您可以按照以下步驟處理這種情況:

  • 使用 SHOW CREATE TABLE 獲取指定源表結構、索引等的 CREATE TABLE 語句。

  • 修改該語句以將表名更改為克隆表的表名,並執行該語句。這樣,您將擁有精確的克隆表。

  • 可選地,如果您還需要複製表內容,則也發出 INSERT INTO ... SELECT 語句。

示例

嘗試以下示例為 tutorials_inf 建立一個克隆表。

步驟 1

獲取有關表的完整結構。

mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
       Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
   `id` int(11) NOT NULL,
   `name` varchar(20) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `AUTHOR_INDEX` (`name`),
   UNIQUE KEY `NAME_INDEX` (`name`),
   KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)

ERROR: No query specified

步驟 2

重新命名此表並建立另一個表。

mysql> CREATE TABLE tutorials_clone(
   → id int(11) NOT NULL,
   → name varchar(20) NOT NULL,
   → PRIMARY KEY (id),
   → UNIQUE KEY AUTHOR_INDEX (name),
   → UNIQUE KEY NAME_INDEX (name),
   →  KEY id (id));
Query OK, 0 rows affected (1.80 sec)

步驟 3

執行步驟 2 後,您將在資料庫中建立一個克隆表。如果您想從舊錶複製資料,則可以使用 INSERT INTO... SELECT 語句。

mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4  Duplicates: 0  Warnings: 0

最後,您將獲得您想要的精確克隆表。

廣告