Mysql复制和备份表

mysql复制表,可通过如下方式操作:

1.insert…select语句

使用如 insert into table1 select * from table2格式的语句,可以从表table2中拷贝一份数据插入表table2,要求表字段一致。

2.create table …select * from …

如果table1之前不存在,则使用create table1 as select * from table2,则可复制table2的表字段和数据。但不会复制自增主键以及索引信息。

3.create table like… insert

如果想向上一步一样,在复制一张表的同时将其自增主键和索引等信息一并复制,
可使用

create table1 like table2;
insert into table1  select * from table2。

mysql备份表,可通过如下方式操作:

1.mysqldump

有时备份数据需将表的结构及数据导出成文件备份,则可使用mysqldump备份
如下:

mysqldump  -h127.0.0.1  -P3306 -uroot  -p123  table > '/tmp/table.sql'

mysqldump还有一些常用的配置常数,以供不同的使用场景使用:

  • –single-transaction
    在导出数据的时候不需要对表加表锁 ;
  • —add-locks
    设置为 0,表示在输出的文件结果里,不增加" LOCK TABLES t WRITE;";
  • –no-create-info
    不需要导出表结构 ;
  • –set-gtid-purged=off
    不输出跟 GTID有关的信息;

导出的备份文件table.sql,可用来恢复表。使用如下:

mysqldump  -h127.0.0.1  -P3306 -uroot  -p123  dbName -e "source /tmp/table.sql"

2.导出到csv文件

除了导出为sql文件外还可以导出到csv文件,使用命令:

select * from table  into outfile '/tmp/table.csv'

使用该命令会生成csv文件保存在mysql服务端,如果当前操作的命令段和mysql服务端不在同台机上,则当前机器目录不会生成csv文件。且文件生成位置受secure_file_priv限制,其值若为empty则不限制生成位置,若为一个路径字符串,则只可保存到该路径。若为NULL,则禁止使用into outfile命令备份。
使用时要注意tmp目录下没有table命名的csv文件,否则会报错。

加载csv文件

使用备份csv文件,将数据写入表,如下:

load data infile '/tmp/table.csv' into table table1

该命令使用的时服务端上的tmp目录文件,如果加上local,则可用命令客户端目录下的文件,实际上使用local就是将本地csv文件发送到服务端再执行。
需要注意的时select… into outfile不会保存表结构,只导出数据。

发布了79 篇原创文章 · 获赞 3 · 访问量 5241

猜你喜欢

转载自blog.csdn.net/SW_LCC/article/details/103589117