Home > Database > Mysql Tutorial > body text

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

WBOY
Release: 2016-05-30 17:10:27
Original
1238 people have browsed it

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

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

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

#mysql
 -u root -ppassword
mysql>CREATE
 DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
Copy after login

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

#mysqldump
 db1 -u root -ppassword --add-drop-table | mysql newdb -u root -ppassword
Copy after login

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

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

#mysqldump
 db1 -uroot -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -uroo
Copy after login

MySQL复制数据表方法

示例如下:

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

CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
Copy after login

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

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

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

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

其它方法:

方案1:

复制整个表

CREATE TABLE  new_table  SELECT  *  FROM  old_table;  
Copy after login

复制,不复制数据

CREATE TABLE  new_table  SELECT  *  FROM  old_table  where  0;
Copy after login

注意:本方案其实只是把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 ;
Copy after login

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

CREATE TABLE newadmin LIKE admin
Copy after login

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

CREATE TABLE newadmin 
( 
SELECT * 
FROM admin 
)
Copy after login

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

CREATE TABLE newadmin LIKE admin; 
INSERT INTO newadmin SELECT * FROM admin;
Copy after login

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

CREATE TABLE newadmin LIKE shop.admin; 
CREATE TABLE newshop.newadmin LIKE shop.admin;
Copy after login

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

CREATE TABLE newadmin 
( 
SELECT username, password FROM admin 
)
Copy after login

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

CREATE TABLE newadmin 
( 
SELECT id, username AS uname, password AS pass FROM admin 
)
Copy after login

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

CREATE TABLE newadmin 
( 
SELECT * FROM admin WHERE LEFT(username,1) = 's' 
)
Copy after login

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

CREATE TABLE newadmin 
( 
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY 
) 
( 
SELECT * FROM admin 
)
Copy after login

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template