欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql复制表以及复制数据库

程序员文章站 2022-03-12 10:51:00
(一)将旧表复制到新表 1、CREATE TABLE新表 SELECT* FROM旧表; 该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等。 CREATE TABLE if not exists new_table SELECT col1, co ......

(一)将旧表复制到新表

1、create table新表 select* from旧表;

该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引主键约束外键约束触发器等。

 

  1. create table if not exists new_table
  2. select col1, col2, col3
  3. from
  4. existing_table
  5. where
  6. conditions;

2、mysql 数据库不支持 select ... into 语句,但支持 insert into ... select 

其中在使用select  into 语句与insert into select 语句时,新表要提前建立,并且新表与旧表的字段属性要一样才可以。

create table 新表 like 旧表;

新表建立之后才可以使用下面的两个语句:

select * into 新表   from  旧表;

insert into  新表  select * from  旧表;

只复制希望的列插入到另一个已存在的表中:

insert into  新表  (column_name(s))  select   column_name(s)  from  旧表;

实例:insert into websites (name, country) select app_name, country from apps;

 

(二)复制相同表结构

 

对于mysql的复制相同表结构方法,有create table as 和create table like 两种

create table 新表 like 旧表;

create table 新表 as select * from 旧表 limit 0;

二者的区别:

 

as用来创建相同表结构并复制源表数据

like用来创建完整表结构和全部索引

oracle支持as,也是只有表结构没有索引
oracle不支持like。

(三)mysql复制表到另一个数据库

访问不同数据库中的表:数据库名.表名 ,采用点 的形式。

有时,您要将表复制到其他数据库。 在这种情况下,可使用以下语句:

  1. create table destination_db.new_table
  2. like source_db.existing_table;
  3.  
  4. insert destination_db.new_table
  5. select *
  6. from source_db.existing_table;
sql

具体流程:

  1. create database if not exists testdb;
sql

其次,通过将其结构从示例数据库(yiibaidb)中的offices表复制出来,在testdb中创建了offices表。

  1. create table testdb.offices like yiibaidb.offices;
sql

第三,我们将数据从yiibaidb.offices表复制到testdb.offices表中。

  1. insert testdb.offices
  2. select *
  3. from yiibaidb.offices;

 

(四)mysql数据库导入导出


1、使用mysqldump工具将数据库导出并转储到sql文件:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 
mysqldump -h ip -u 用户名 -p 数据库名 > 导出的文件名

2 :(导出某张表的表结构不含数据)
mysqldump -h localhost -u root -p -d test pollution > g:\arcgisworkspace\zypdoc\test.sql
3:(导出某张表的表结构和数据,不加-d)
mysqldump -h 127.0.0.1 -u root -p test pollution > g:\arcgisworkspace\zypdoc\test.sql
mysqldump-u root -p yiibaidb >d:\database_bak\yiibaidb.sql
其中>表示导出。
2、导入sql文件
在mysql中新建数据库,这时是空数据库,如新建一个名为news的目标数据库
create database if not exists news;
use news;
导入文件:
source 路径+导入的文件名; 
source d:\mysql.sql;

 

要复制一个mysql数据库,您需要执行以下步骤:

  • 首先,使用create database语句创建一个新的数据库。
  • 其次,使用mysqldump工具导出要复制的数据库的所有数据库对象和数据。
  • 第三,将sql转储文件导入新的数据库。

作为一个演示,假设要把yiibaidb数据库复制到yiibaidb_backup数据库:

步骤1, 创建yiibaidb_backup数据库:

首先,登录到mysql数据库服务器:

c:\users\administrator> mysql -u root -p
enter password: **********
shell

然后,使用create database语句如下:

  1. create database yiibaidb_backup;
sql

第三,使用show databases命令验证:

  1. show databases
sql

 

步骤2

 

使用mysqldump工具将数据库对象和数据转储到sql文件中。

假设要将数据库对象和数据库转储到位于d:\database_bak文件夹的sql文件中,这里是以下命令:

  1. c:\users\administrator> mysqldump -u root -p yiibaidb > d:\database_bak\yiibaidb.sql
  2. enter password: **********
sql

基本上,此命令指示mysqldump使用具有密码的root登录到mysql服务器,并将数据库对象和yiibaidb数据库的数据导出到d:\database_bak\yiibaidb.sql。 请注意,运算符(>)表示导出。

步骤2

d:\database_bak\yiibaidb.sql文件导入到yiibaidb_backup数据库。

c:\users\administrator> mysql -u root -p yiibaidb_backup < d:\database_bak\yiibaidb.sql
enter password: **********
shell

请注意,运算符(<)表示导入。

要验证导入,可以使用show tables命令快速检查。

mysql> show tables from yiibaidb_backup;