Mysql复制和备份表

本文详细介绍MySQL中复制表和备份表的多种方法,包括insert...select语句、create table...select * from...、create table like...insert以及使用mysqldump工具进行数据导出和导入,同时讲解了导出到CSV文件的注意事项。
摘要由CSDN通过智能技术生成

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不会保存表结构,只导出数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值