【mysql】mysql中表複製方案小結

來源:互聯網
上載者:User

我們在使用資料庫的過程中,經常會碰到需要複製一個表的結構或者資料的情況,今天就大致總結了mysql中複製表結構和資料的相應方案。記錄一下,以備不時之需。

總的來說,複製分為兩大類:複製表結構和複製表資料(當然也可以同時複製表結構和表資料)。

現在假設我們有個資料表src:

我們先看錶的結構和資料:(需要注意的是我們在表的id,wp_id,label_id都加上了索引)

desc src;

select * from src;

下面對各種方案進行測試和總結:

1. 通過 create table xx as select * from 的方式複製表。

create table src_test as select * from src;

然後我們再看新表的資料和結構:

desc src_test;

仔細看圖中的key的地方:我們發現,在複製表的過程中,丟失了原表的索引等資訊。這些索引可以通過手動的方式添加。

再看資料:

select * from src_test;


可見資料是複製過來了。因而這種方式適合copy原表的資料,但是如果要保留索引資訊,需要選擇其他的方式。

另外,如果要複製的僅僅是表結構,而且要保持索引的,該方案也不適合。

2. 通過create table like來複製表結構和索引

還有一種方式,可以只複製表的結構而不複製表的資料。

create table src_test like src;

圖中可以看出來:create table XXX like YYY 方式僅僅複製了原表的表結構,沒有複製表資訊,而且在複製表結構的同時保留了原表的索引等資訊。

那麼資料呢,我們可以通過insert XX select 的方式copy資料:

當然,通過這種方式,也可以將原表的部分資料插入到新表的相應欄位中。

3. 通過複製原表的建表語句,建立新的表:

show create table src;

另外:很多資料庫管理軟體(如phpmyadmin,navicat,mysql-front,mymanager等)都支援匯出為sql語句的功能。可以匯出為sql檔案後再copy相應的表或者資料。

大家還有什麼更好的方案:歡迎留言。

備忘錄,學無止境。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.