mysql -u root -ppassword CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
mysqldump db1 -u root -ppassword --add-drop-table | mysql newdb -u root -ppassword
注意:-ppassword 中 -p 與密碼之間無空格。
前提:目標 MySQL 允許遠程連線,網路延遲可接受。
mysqldump db1 -u root -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -u root -ppassword
範例:將 production 資料庫的 mytbl 複製為 mytbl_new
CREATE TABLE mytbl_new LIKE production.mytbl; INSERT INTO mytbl_new SELECT * FROM production.mytbl;
production. 為資料庫限定詞,若在當前資料庫可省略-- 複製結構與資料 CREATE TABLE new_table SELECT * FROM old_table; -- 僅複製結構 CREATE TABLE new_table SELECT * FROM old_table WHERE 0;
⚠️ 缺點:新表無主鍵、無索引、無 AUTO_INCREMENT,僅保留欄位定義與資料。
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
✅ 完整保留表結構屬性。
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
-- 僅複製 username, password CREATE TABLE newadmin (SELECT username, password FROM admin); -- 複製並重命名欄位 CREATE TABLE newadmin (SELECT id, username AS uname, password AS pass FROM admin); -- 條件篩選複製 CREATE TABLE newadmin (SELECT * FROM admin WHERE LEFT(username,1) = 's'); -- 建表時自訂主鍵 CREATE TABLE newadmin (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) (SELECT * FROM admin);
| 需求 | 推薦方法 | 優點 | 缺點 |
|---|---|---|---|
| 整庫複製(同機) | mysqldump 管道 | 單指令、含結構與資料、效率高 | 需相同版本相容 |
| 整庫複製(跨機) | mysqldump + mysql -h | 網路流式傳輸、無中間檔案 | 依賴網路穩定、遠程權限 |
| 單表複製(保留索引/主鍵) | CREATE TABLE ... LIKE + INSERT SELECT | 完整保留結構屬性、語法標準 | 兩步驟 |
| 快速建表不需索引 | CREATE TABLE ... SELECT | 一條指令 | 丟失索引/主鍵/自增 |
根據業務場景選擇合適方案,生產環境操作前請務必備份!