我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

什么时候需要复制表数据?

我们先列出几个需要复制MySQL表数据的场景:

1. 加入新的项目团队。该项目已经开发了一段时间。您想建立一个本地数据库以方便开发。

2、领导让你做报告。他需要对数据库做一些工作,然后将报告导出给他。

3.定期数据库备份

4.数据库误删除数据恢复

复制表数据的三种方法

以下是复制表数据的三种方法。方法1和2是逻辑复制,方法3是物理复制。每种方法都有其局限性,可以根据不同的场景进行选择和使用。记录下面的关键语句,以便于收集和随时使用。

方法一

1、将满足条件的语句导出到文件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. 选择执行导出的sql文件的数据库。

mysql -h127.0.0.1 -P13000  -uroot -p db2 -e "source /tmp/t.sql"

方法二进入

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》

二维码
扫一扫在手机端查看

本文链接:https://by928.com/7683.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线