MySQL->複製表[20180509]

請點..頭像發表於2018-05-09
MySQL複製表
    通常複製表所採用CREATE TABLE …. SELECT 方式將資料複製,但無法將舊錶中的索引,約束(除非空以外的)也複製。
 
完整複製MySQL資料表所需步驟:
方式一
    1.使用SHOW CREATE TABLE 命令獲取建立資料表的create table語句,語句會包含原表的結構,索引,儲存引擎,字符集。
    2.更改其中的表名稱,再執行create table語句。
    3.複製表的資料,使用INSERT INTO … SELECT 語句。
方式二
    CREATE TABLE <table_name> LIKE <old_table>;
     INSERT INTO <table_name> SELECT * FROM <old_table>;
 
 
獲取建立表的SQL語句:
mysql> show create table index_tab01G
*************************** 1. row ***************************
       Table: index_tab01
Create Table: CREATE TABLE `index_tab01` (
  `id` int(11) NOT NULL DEFAULT `0`,
  `col01` varchar(10) NOT NULL DEFAULT “,
  `col02` text,
  UNIQUE KEY `index_un` (`col01`),
  KEY `indx_01` (`col01`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
更改表名稱,後執行建立語句:
mysql> CREATE TABLE `copy_tab01` (
    ->   `id` int(11) NOT NULL DEFAULT `0`,
    ->   `col01` varchar(10) NOT NULL DEFAULT “,
    ->   `col02` text,
    ->   UNIQUE KEY `index_un` (`col01`),
    ->   KEY `indx_01` (`col01`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    -> ;
Query OK, 0 rows affected (0.01 sec)
 
複製表的資料
mysql> insert into copy_tab01 select * from index_tab01;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
 
mysql> select * from copy_tab01;
+—-+——–+—————+
| id | col01  | col02         |
+—-+——–+—————+
|  0 | Name01 | This is Test! |
|  0 | Name02 | This is Test! |
|  0 | Name03 | This is Test! |
|  0 | Name04 | This is Test! |
+—-+——–+—————+
4 rows in set (0.00 sec)
 
mysql> select * from index_tab01;
+—-+——–+—————+
| id | col01  | col02         |
+—-+——–+—————+
|  0 | Name01 | This is Test! |
|  0 | Name02 | This is Test! |
|  0 | Name03 | This is Test! |
|  0 | Name04 | This is Test! |
+—-+——–+—————+
4 rows in set (0.00 sec)
 
方式二,複製完整的表
mysql> create table copy_tab02 like index_tab01;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show create table copy_tab02G
*************************** 1. row ***************************
       Table: copy_tab02
Create Table: CREATE TABLE `copy_tab02` (
  `id` int(11) NOT NULL DEFAULT `0`,
  `col01` varchar(10) NOT NULL DEFAULT “,
  `col02` text,
  UNIQUE KEY `index_un` (`col01`),
  KEY `indx_01` (`col01`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
mysql> insert into copy_tab02 select * from index_tab01;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> select * from copy_tab02;
+—-+——–+—————+
| id | col01  | col02         |
+—-+——–+—————+
|  0 | Name01 | This is Test! |
|  0 | Name02 | This is Test! |
|  0 | Name03 | This is Test! |
|  0 | Name04 | This is Test! |
+—-+——–+—————+
4 rows in set (0.00 sec)
 
 
    
 

相關文章