首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 快速複製資料庫與資料表的高效方法

     編輯:MySQL 資料庫相關知識

一、同機器複製整個資料庫

  1. 建立目標資料庫
    mysql -u root -ppassword
    CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
  2. 單指令完成結構與資料複製
    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. 為資料庫限定詞,若在當前資料庫可省略

四、其他常見複製方案對比

方案 1:CREATE TABLE ... SELECT

-- 複製結構與資料
CREATE TABLE new_table SELECT * FROM old_table;
-- 僅複製結構
CREATE TABLE new_table SELECT * FROM old_table WHERE 0;

⚠️ 缺點:新表無主鍵、無索引、無 AUTO_INCREMENT,僅保留欄位定義與資料。

方案 2:LIKE + INSERT SELECT(推薦標準做法)

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一條指令丟失索引/主鍵/自增

根據業務場景選擇合適方案,生產環境操作前請務必備份!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved