龙空技术网

关于复制 MySQL 表数据的三个方法

Java学习分享 171

前言:

眼前兄弟们对“mysql复制表的语句”可能比较讲究,看官们都需要剖析一些“mysql复制表的语句”的相关文章。那么小编在网摘上收集了一些关于“mysql复制表的语句””的相关文章,希望各位老铁们能喜欢,大家快快来了解一下吧!

什么时候需要复制表数据

先列举下几个需要复制 MySQL 表数据的场景:

1、新加入一个项目组,项目已经开发一段时间了,你想要在本地搞个数据库,方便开发

2、领导找你要个报表,需要对数据库进行一些,然后导出报表给他

3、数据库定期备份

4、数据库误删恢复数据

复制表数据的三个方法

下面是复制表数据的三个方法,方法一、方法二是逻辑复制,方法三是物理复制。每个方法各有限制,可以根据不同的场景选择使用。下面记录关键语句,方便收藏,拿来即用。

方法一 mysqldump

1、导出符合条件的数据的 insert 语句到文件 t.sql

mysqldump -h$host -P$port -u$user -p --add-locks=0 --no-create-info --single-transaction  --set-gtid-purged=OFF db1 t --where="a>900" --result-file=/tmp/t.sql

2、选择数据库执行导出 insert 的 sql 文件

mysql -h127.0.0.1 -P13000  -uroot -p db2 -e "source /tmp/t.sql"
方法二 select into outfile

1、导出数据到 csv 文件

select * from db1.t where a>900 into outfile '/tmp/t.csv';

2、导入 csv 文件数据

load data infile '/tmp/t.csv' into table db2.t;
方法三 可传输表空间

说明:方法需要 mysql版本 5.6 以上 1、创建新表 r

create table r like t;

2、删除新表 r 的表空间(ibd 文件)

alter table r discard tablespace;

3、锁表,导出 cfg 文件

flush table t for export;

4、复制 cfg、ibd 文件

cp t.cfg r.cfg; cp t.ibd r.ibd;

5、修改复制后文件的权限

chown mysql:mysql r.*

6、解锁表

unlock tables;

7、导入表空间

alter table r import tablespace;
其它

批量插入数据的存储过程

delimiter ;; create procedure idata() begin declare i int; set i=1; while(i<=1000)do insert into t values(i,i,i); set i=i+1; end while; end;;delimiter ;call idata();
参考文档

《MySQL 实战45讲》

标签: #mysql复制表的语句 #db2复制表 #mysql复制数据行 #mysql快速复制表数据