複製步驟:
-
先產生一個結構相同的新資料表
CREATE TABLE new_table LIKE old_table;
-
再將舊資料表資料,寫入新資料表
INSERT new_table SELECT * FROM old_table;
CREATE TABLE ... LIKE 語法,注意事項:
- 只能用於基本資料表(base table),不能用於 view。
- 舊資料表 LOCK 時無法使用。(測試 LOCK READ 可以,但 LOCK WRITE 時不行)
- CREATE TABLE ... LIKE 不是只複製 .frm 檔,而是會做跟 CREATE 一樣的檢查,所以若目前的 SQL mode 跟當初創建舊資料表時不同,若創建語法跟目前 SQL mode 不合時,可能會執行失敗。
- 無法複製:DATA DIRECTORY 設定、INDEX DIRECTORY 設定、外鍵、trigger。
- 若是複製的新資料要做成暫存資料表(TEMPORARY),則使用 CREATE TEMPORARY TABLE ... LIKE 語法。
參考:
Duplicating a MySQL table, indexes and data - Stack Overflow
MySQL :: MySQL 5.7 Reference Manual :: 13.1.18.4 CREATE TABLE ... LIKE Syntax
沒有留言:
張貼留言