MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法
某些時候,例如為了搭建一個測試環(huán)境,或者克隆一個網(wǎng)站,需要復(fù)制一個已存在的mysql數(shù)據(jù)庫。使用以下方法,可以非常簡單地實(shí)現(xiàn)。
假設(shè)已經(jīng)存在的數(shù)據(jù)庫名字叫db1,想要復(fù)制一份,命名為newdb。步驟如下:
1. 首先創(chuàng)建新的數(shù)據(jù)庫newdb
#mysql -u root -ppassword mysql>CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
2. 使用mysqldump及mysql的命令組合,一次性完成復(fù)制
#mysqldump db1 -u root -ppassword --add-drop-table | mysql newdb -u root -ppassword
(注意-ppassword參數(shù)的寫法:-p后面直接跟密碼,中間沒有空格)
以上是在同一臺MySQL服務(wù)器上復(fù)制數(shù)據(jù)庫的方法。如果要復(fù)制到遠(yuǎn)程另一臺MySQL服務(wù)器上,可以使用mysql的“ -h 主機(jī)名/ip”參數(shù)。前提是mysql允許遠(yuǎn)程連接,且遠(yuǎn)程復(fù)制的傳輸效率和時間可以接受。
#mysqldump db1 -uroot -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -uroo
MySQL復(fù)制數(shù)據(jù)表方法
示例如下:
將 production 數(shù)據(jù)庫中的 mytbl 表快速復(fù)制為 mytbl_new,2個命令如下:
CREATE TABLE mytbl_new LIKE production.mytbl; INSERT mytbl_new SELECT * FROM production.mytbl;
第一個命令是創(chuàng)建新的數(shù)據(jù)表 mytbl_new ,并復(fù)制 mytbl 的數(shù)據(jù)表結(jié)構(gòu)。
第二個命令是講數(shù)據(jù)表 mytbl 中的數(shù)據(jù)復(fù)制到新表 mytbl_new 。
注:production.mytbl是指定要復(fù)制表的數(shù)據(jù)庫名稱為 production 。它是可選的。
假如沒有production. ,MySQL數(shù)據(jù)庫將會假設(shè)mytbl在當(dāng)前操作的數(shù)據(jù)庫。
其它方法:
方案1:
復(fù)制整個表
CREATE TABLE new_table SELECT * FROM old_table;
復(fù)制,不復(fù)制數(shù)據(jù)
CREATE TABLE new_table SELECT * FROM old_table where 0;
注意:本方案其實(shí)只是把select語句的結(jié)果建一個表。所以new_table這個表不會有主鍵、索引。
方案2:
假如我們有以下這樣一個表:
id username password
-----------------------------------
1 admin *************
2 sameer *************
3 stewart *************
CREATE TABLE IF NOT EXISTS `admin` ( `id` int(6) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL default '', `password` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
1. 下面這個語句會拷貝表結(jié)構(gòu)到新表newadmin中。 (不會拷貝表中的數(shù)據(jù))
CREATE TABLE newadmin LIKE admin
2. 下面這個語句會拷貝數(shù)據(jù)到新表中。 注意:這個語句其實(shí)只是把select語句的結(jié)果建一個表。所以newadmin這個 表不會有主鍵,索引。
CREATE TABLE newadmin ( SELECT * FROM admin )
3. 如果你要真正的復(fù)制一個表??梢杂孟旅娴恼Z句。
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
4. 我們可以操作不同的數(shù)據(jù)庫。
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
5. 我們也可以拷貝一個表中其中的一些字段。
CREATE TABLE newadmin ( SELECT username, password FROM admin )
6. 我們也可以講新建的表的字段改名。
CREATE TABLE newadmin ( SELECT id, username AS uname, password AS pass FROM admin )
7. 我們也可以拷貝一部分?jǐn)?shù)據(jù)。
CREATE TABLE newadmin ( SELECT * FROM admin WHERE LEFT(username,1) = 's' )
8. 我們也可以在創(chuàng)建表的同時定義表中的字段信息。
CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) ( SELECT * FROM admin )
以上內(nèi)容就是小編給大家介紹的MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法,希望大家喜歡。
- Mysql將一個表中的某一列數(shù)據(jù)復(fù)制到另一個表中某一列里的方法
- MySQL查詢結(jié)果復(fù)制到新表的方法(更新、插入)
- MySQL中表復(fù)制:create table like 與 create table as select
- mysql中復(fù)制表結(jié)構(gòu)的方法小結(jié)
- mysql把一個表某個字段的內(nèi)容復(fù)制到另一張表的某個字段的SQL語句寫法
- mysql跨數(shù)據(jù)庫復(fù)制表(在同一IP地址中)示例
- MySQL數(shù)據(jù)表字段內(nèi)容的批量修改、清空、復(fù)制等更新命令
- Mysql復(fù)制表三種實(shí)現(xiàn)方法及grant解析
相關(guān)文章
Linux中更改轉(zhuǎn)移mysql數(shù)據(jù)庫目錄的步驟
前幾天發(fā)現(xiàn)由于MySQL的數(shù)據(jù)庫太大,默認(rèn)安裝的/var盤已經(jīng)再也無法容納新增加的數(shù)據(jù),只能想辦法轉(zhuǎn)移數(shù)據(jù)的目錄。網(wǎng)上有很多相關(guān)的文章寫到轉(zhuǎn)移數(shù)據(jù)庫目錄的文章,但轉(zhuǎn)載的過程中還會有一些錯誤,因?yàn)榇蟛糠秩烁揪蜎]測試過,這篇文章是本文測試過整理好后分享給大家。2016-11-11
centos6.4下mysql5.7.18安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了centos6.4下mysql5.7.18安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
MySql中 is Null段判斷無效和IFNULL()失效的解決方案
這篇文章主要介紹了MySql中 is Null段判斷無效和IFNULL()失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

