首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL跨數據庫移動表:CREATE TABLE ... LIKE + INSERT SELECT 或 RENAME TABLE

     編輯:程式設計綜合問答

場景

將數據庫a中表t(僅結構無數據)移至數據庫b,b中無同名表。

方案一:RENAME TABLE(最簡單、原子操作)

RENAME TABLE a.t TO b.t;
  • 要求:同一MySQL實例、同一文件系統(通常滿足)、有ALTER/DROP權限。
  • 優點:極快(僅修改元數據)、保留索引/外鍵/權限、不拷貝數據。

方案二:CREATE LIKE + INSERT(通用、跨實例可用)

-- 在目標庫創建同結構空表
CREATE TABLE b.t LIKE a.t;

-- 若有數據則複製(題目無數據可省略)
INSERT INTO b.t SELECT * FROM a.t;

-- 確認無誤後刪除源表
DROP TABLE a.t;

方案三:mysqldump導出導入(跨服務器/版本)

mysqldump -u root -p a t --no-data > t_struct.sql  # 只導結構
mysql -u root -p b < t_struct.sql
# 確認後
mysql -u root -p -e "DROP TABLE a.t"

注意事項

  • 外鍵約束:RENAME TABLE會嘗試移動外鍵,若目標庫無父表則失敗 → 先刪除外鍵或用CREATE LIKE。
  • 權限遷移:RENAME保留表級權限,CREATE LIKE需重新GRANT。
  • 觸發器/視圖:需單獨遷移(SHOW TRIGGERS/SHOW CREATE VIEW)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved