MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法
某些時候,例如為了搭建一個測試環(huán)境,或者克隆一個網(wǎng)站,需要復(fù)制一個已存在的mysql數(shù)據(jù)庫。使用以下方法,可以非常簡單地實現(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;
注意:本方案其實只是把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ù)到新表中。 注意:這個語句其實只是把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ù)制表三種實現(xiàn)方法及grant解析
相關(guān)文章
MySQL 遷移后無法快速導(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)的錯誤問題和解決辦法,需要的朋友參考學(xué)習(xí)下吧。2017-12-12mysql ERROR 1045 (28000)問題的解決方法
這篇文章主要介紹了mysql ERROR 1045 (28000)問題的解決方法,文中步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10