mysql怎么备份还原单张数据表的部分数据 50

项目采用java的SSH系统,hibernate,现在备份还原用的是cmd指令,mysqldump导出现在想备份一张MyISAM引擎的设备状态表,数据很多,1个月3000... 项目采用java的SSH系统,hibernate,现在备份还原用的是cmd指令,mysqldump导出
现在想备份一张MyISAM引擎的设备状态表,数据很多,1个月3000W条左右,想备份部分数据,比如昨天一天的数据
mysqldump -uroot -p123456 -t 数据库 数据表 --where "条件" > 目录
这句导出后是先drop索引,再insert,再添加索引
但是insert的时候会报错,id冲突,导不进去。
我设想的是在drop索引后delete相关的数据,再insert,或者直接把insert改为replace等,这样就不会冲突了
不知道具体怎么实施,百度也找不到mysql导出自定义功能的命令,求高手。。
展开
 我来答
asxsa
2014-11-05 · 超过12用户采纳过TA的回答
知道答主
回答量:23
采纳率:0%
帮助的人:11.8万
展开全部
原表里的数据还存在,如果原表里还有唯一性索引,没删除前肯定导入不进去的。可以先把备份还原到一个Temp表,再删除原表主键存在于Temp表的数据,再把Temp表Insert到原表。

删除原表主键存在于Temp表的数据示例:
DELETE FROM tab d
WHERE -1 = -1
AND EXISTS (SELECT -1
FROM temp t
WHERE -1 = -1
AND t.key = d.key);
更多追问追答
追问
这个原理的话在导入前先删除相关id的数据,再导入,不就可以了么,但是这个需要先disable索引,再删除id,再enable索引。。然后导入的时候也是一样,先disable索引,再insertN多数据,再enable索引 。。这样不是对索引多操作了一次么,而且随着数据变大,索引会越来越大,中间会多消耗很多时间的。。我想的是把删除id这一步直接加在insert前,这样就只要操作一次索引。。
追答
我说的就三步,不需要你对索引进行操作,先把备份还原到一个Temp表,再删除原表主键存在于Temp表的数据(简单说就是删除原表ID重复的数据),再把Temp表Insert到原表。
壹寰(深圳)科技文化有限公司
2021-03-27 广告
不同公司提供的方案也不一样。以上内容如果还觉得不够全面,也可以沟通下壹寰(深圳)科技文化有限公司。91数据恢复是壹寰(深圳)科技文化有限公司旗下专业数据恢复品牌,91数据恢复专注于勒索病毒数据恢复、勒索病毒数据修复、数据库修复、数据库解密恢... 点击进入详情页
本回答由壹寰(深圳)科技文化有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式