首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 表克隆完全指南:結構+索引+數據一鍵復制

     編輯:MySQL 綜合教學

為什麼需要克隆?

CREATE TABLE ... SELECT 只復制列定義和數據,不包含索引、主鍵、AUTO_INCREMENT、默認值、引擎、字符集等關鍵屬性。完整克隆需三步走。

三步克隆法

步驟 1:獲取完整建表語句

SHOW CREATE TABLE tutorials_tbl\G
*************************** 1. row ***************************
Table: tutorials_tbl
Create Table: CREATE TABLE `tutorials_tbl` (
  `tutorial_id` int(11) NOT NULL AUTO_INCREMENT,
  `tutorial_title` varchar(100) NOT NULL DEFAULT '',
  `tutorial_author` varchar(40) NOT NULL DEFAULT '',
  `submission_date` date DEFAULT NULL,
  PRIMARY KEY (`tutorial_id`),
  UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

步驟 2:修改表名並執行創建

CREATE TABLE `clone_tbl` (
  `tutorial_id` int(11) NOT NULL AUTO_INCREMENT,
  `tutorial_title` varchar(100) NOT NULL DEFAULT '',
  `tutorial_author` varchar(40) NOT NULL DEFAULT '',
  `submission_date` date DEFAULT NULL,
  PRIMARY KEY (`tutorial_id`),
  UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

步驟 3:復制數據(可選)

INSERT INTO clone_tbl (tutorial_id, tutorial_title, tutorial_author, submission_date)
SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl;

一鍵腳本化(Shell)

#!/bin/bash
SRC_DB="TUTORIALS"
SRC_TBL="tutorials_tbl"
DST_TBL="clone_tbl"

# 獲取建表語句,替換表名
CREATE_SQL=$(mysql -N -e "SHOW CREATE TABLE \`$SRC_DB\`.\`$SRC_TBL\`" | awk -F'\t' '{print $2}' | sed "s/\`$SRC_TBL\`/\`$DST_TBL\`/")

mysql -e "$CREATE_SQL" $SRC_DB
mysql -e "INSERT INTO \`$DST_TBL\` SELECT * FROM \`$SRC_TBL\`" $SRC_DB
echo "克隆完成:$DST_TBL"

常見變體

  • 只克隆結構:CREATE TABLE new_tbl LIKE old_tbl(保留索引/引擎/字符集,無數據)
  • 跨庫克隆:CREATE TABLE db2.new_tbl LIKE db1.old_tbl
  • 條件克隆數據:INSERT INTO new_tbl SELECT * FROM old_tbl WHERE create_time > '2024-01-01'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved