MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法
某些時(shí)候,例如為了搭建一個(gè)測(cè)試環(huán)境,或者克隆一個(gè)網(wǎng)站,需要復(fù)制一個(gè)已存在的mysql數(shù)據(jù)庫。使用以下方法,可以非常簡(jiǎn)單地實(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后面直接跟密碼,中間沒有空格)
以上是在同一臺(tái)MySQL服務(wù)器上復(fù)制數(shù)據(jù)庫的方法。如果要復(fù)制到遠(yuǎn)程另一臺(tái)MySQL服務(wù)器上,可以使用mysql的“ -h 主機(jī)名/ip”參數(shù)。前提是mysql允許遠(yuǎn)程連接,且遠(yuǎn)程復(fù)制的傳輸效率和時(shí)間可以接受。
#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個(gè)命令如下:
CREATE TABLE mytbl_new LIKE production.mytbl; INSERT mytbl_new SELECT * FROM production.mytbl;
第一個(gè)命令是創(chuàng)建新的數(shù)據(jù)表 mytbl_new ,并復(fù)制 mytbl 的數(shù)據(jù)表結(jié)構(gòu)。
第二個(gè)命令是講數(shù)據(jù)表 mytbl 中的數(shù)據(jù)復(fù)制到新表 mytbl_new 。
注:production.mytbl是指定要復(fù)制表的數(shù)據(jù)庫名稱為 production 。它是可選的。
假如沒有production. ,MySQL數(shù)據(jù)庫將會(huì)假設(shè)mytbl在當(dāng)前操作的數(shù)據(jù)庫。
其它方法:
方案1:
復(fù)制整個(gè)表
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é)果建一個(gè)表。所以new_table這個(gè)表不會(huì)有主鍵、索引。
方案2:
假如我們有以下這樣一個(gè)表:
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. 下面這個(gè)語句會(huì)拷貝表結(jié)構(gòu)到新表newadmin中。 (不會(huì)拷貝表中的數(shù)據(jù))
CREATE TABLE newadmin LIKE admin
2. 下面這個(gè)語句會(huì)拷貝數(shù)據(jù)到新表中。 注意:這個(gè)語句其實(shí)只是把select語句的結(jié)果建一個(gè)表。所以newadmin這個(gè) 表不會(huì)有主鍵,索引。
CREATE TABLE newadmin ( SELECT * FROM admin )
3. 如果你要真正的復(fù)制一個(gè)表??梢杂孟旅娴恼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. 我們也可以拷貝一個(gè)表中其中的一些字段。
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)建表的同時(shí)定義表中的字段信息。
CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) ( SELECT * FROM admin )
以上內(nèi)容就是小編給大家介紹的MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法,希望大家喜歡。
- Mysql將一個(gè)表中的某一列數(shù)據(jù)復(fù)制到另一個(gè)表中某一列里的方法
- MySQL查詢結(jié)果復(fù)制到新表的方法(更新、插入)
- MySQL中表復(fù)制:create table like 與 create table as select
- mysql中復(fù)制表結(jié)構(gòu)的方法小結(jié)
- mysql把一個(gè)表某個(gè)字段的內(nèi)容復(fù)制到另一張表的某個(gè)字段的SQL語句寫法
- mysql跨數(shù)據(jù)庫復(fù)制表(在同一IP地址中)示例
- MySQL數(shù)據(jù)表字段內(nèi)容的批量修改、清空、復(fù)制等更新命令
- Mysql復(fù)制表三種實(shí)現(xiàn)方法及grant解析
相關(guān)文章
MySQL查詢出現(xiàn)1055錯(cuò)誤的原因及解決方法
Mysql在使用過程中經(jīng)常遇到錯(cuò)誤,都是本人在實(shí)際應(yīng)用中處理檢驗(yàn)過的,本文對(duì)常見錯(cuò)誤出現(xiàn)的代碼進(jìn)行詳細(xì)分析,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢出現(xiàn)1055錯(cuò)誤的原因及解決方法,需要的朋友可以參考下2023-05-05MySQL 遷移后無法快速導(dǎo)數(shù)據(jù)問題解決
這篇文章主要為大家介紹了MySQL 遷移后無法快速導(dǎo)數(shù)據(jù)問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10MySQL中slave_exec_mode參數(shù)詳解
本篇文章主要給大家講述了MySQL中slave_exec_mode參數(shù)的用法以及示例分析了出現(xiàn)的錯(cuò)誤問題和解決辦法,需要的朋友參考學(xué)習(xí)下吧。2017-12-12mysql ERROR 1045 (28000)問題的解決方法
這篇文章主要介紹了mysql ERROR 1045 (28000)問題的解決方法,文中步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10