前言:
眼前兄弟们对“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快速复制表数据