Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL快速复制数据库数据表的方法_MySQL

WBOY
Freigeben: 2016-05-30 17:10:27
Original
1184 Leute haben es durchsucht

某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。

假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:

1. 首先创建新的数据库newdb

#mysql
 -u root -ppassword
mysql>CREATE
 DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
Nach dem Login kopieren

2. 使用mysqldump及mysql的命令组合,一次性完成复制

#mysqldump
 db1 -u root -ppassword --add-drop-table | mysql newdb -u root -ppassword
Nach dem Login kopieren

(注意-ppassword参数的写法:-p后面直接跟密码,中间没有空格)

以上是在同一台MySQL服务器上复制数据库的方法。如果要复制到远程另一台MySQL服务器上,可以使用mysql的“ -h 主机名/ip”参数。前提是mysql允许远程连接,且远程复制的传输效率和时间可以接受。

#mysqldump
 db1 -uroot -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -uroo
Nach dem Login kopieren

MySQL复制数据表方法

示例如下:

将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:

CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
Nach dem Login kopieren

第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。

第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。

注:production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。

假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。

其它方法:

方案1:

复制整个表

CREATE TABLE  new_table  SELECT  *  FROM  old_table;  
Nach dem Login kopieren

复制,不复制数据

CREATE TABLE  new_table  SELECT  *  FROM  old_table  where  0;
Nach dem Login kopieren

注意:本方案其实只是把select语句的结果建一个表。所以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 ;
Nach dem Login kopieren

1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)

CREATE TABLE newadmin LIKE admin
Nach dem Login kopieren

2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个 表不会有主键,索引。

CREATE TABLE newadmin 
( 
SELECT * 
FROM admin 
)
Nach dem Login kopieren

3. 如果你要真正的复制一个表。可以用下面的语句。

CREATE TABLE newadmin LIKE admin; 
INSERT INTO newadmin SELECT * FROM admin;
Nach dem Login kopieren

4. 我们可以操作不同的数据库。

CREATE TABLE newadmin LIKE shop.admin; 
CREATE TABLE newshop.newadmin LIKE shop.admin;
Nach dem Login kopieren

5. 我们也可以拷贝一个表中其中的一些字段。

CREATE TABLE newadmin 
( 
SELECT username, password FROM admin 
)
Nach dem Login kopieren

6. 我们也可以讲新建的表的字段改名。

CREATE TABLE newadmin 
( 
SELECT id, username AS uname, password AS pass FROM admin 
)
Nach dem Login kopieren

7. 我们也可以拷贝一部分数据。

CREATE TABLE newadmin 
( 
SELECT * FROM admin WHERE LEFT(username,1) = 's' 
)
Nach dem Login kopieren

8. 我们也可以在创建表的同时定义表中的字段信息。

CREATE TABLE newadmin 
( 
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY 
) 
( 
SELECT * FROM admin 
)
Nach dem Login kopieren

以上内容就是小编给大家介绍的MySQL快速复制数据库数据表的方法,希望大家喜欢。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!