mysql 快速備份表數據


1.情景展示

在工作過程中,我們往往會有對表數據進行備份的需求,比如說:對表數據進行大量操作時,為了以防萬一,最好是將數據進行備份,以免操作不當,導致無法恢復原有的數據。

2.解決方案

和Oracle的用法一模一樣,語法如下:

CREATE TABLE NEW_TALBE_NAME AS SELECT * FROM OLD_TABLE_NAME;

3.實戰演練

對表cz_jkdic進行備份。

此時,表的數據已經完成了備份,已經產生了一張新表:cz_jkdic_bak;

下面,我們一起來看一下兩表的區別:

查看建表語句:SHOW CREATE TABLE TABLE_NAME。

create table列展示的就是對應表的建表語句

將cz_jkdic表和cz_jkdic_bak表的建表語句拿出來,進行對比:

我們會發現備份表發生了以下變化:

第一,主鍵消失(備份表沒有指定哪一列是主鍵);

第二,索引消失(備份表已經不存在索引);

第三,自增消失(因為mysql的自增屬性只能和主鍵綁定)。

第四:字段的非空屬性會保留。

如果原表有觸發器的話,觸發器應該也不會復制過來的;

外鍵約束同樣不會復制。

由此,我們可以下這樣的結論:

使用create table 新表名 as select * from 舊表名的方式,能實現的功能:

第一,建表(表的字段列和原表一模一樣)(可以理解為:沒有指定主鍵和索引的普通建表語句);

第二,復制數據(將原表數據塞進新表當中)。

僅僅只有這兩個作用,一定不要忘了,歸根結底是因為:我們用的建表語句沒有定義其它內容。

所以說,當我們后續需要對備份表進行復用的時候,需要:

第一,重新指定表主鍵,避免與原有數據造成主鍵沖突,導致后續數據插入失敗(如果使用自增屬性的話,mysql會自動將現有主鍵列的最大值+1,當作自增的起始值)。

第二,重新建立表索引。

4.另一種實現方式

如果數據量不大的話,可以使用Navicat來實現;

切換到表視圖;

選中要復制的表,按Ctrl+C進行復制,再按Ctrl+V進行粘貼,就會快速完成表及數據的復制;

而且,復制后的表和原表一模一樣,不會造成主鍵和索引的丟失。

2022年5月23日21:01:21

5.清空表數據

只是清空表數據,原有表結構不受影響。

以truncate為例進行說明

第一:表的數據被清空后,表的主鍵依然存在;

第二:表自增值不受影響(也就是說:不會被重置為0);

第三:索引、外鍵、觸發器等均不受影響。

第四:字段的非空屬性會保留。

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM