MySQL批量备份或者写入数据

举报
星汉网络 发表于 2022/06/07 20:45:33 2022/06/07
【摘要】 需求背景在大数据量表的情况下,需要备份一张表中的数据,到另外一张表。尽量不要使用框架的对象insert方法,效率很低。尽量使用SQL的原生写法来完成。如下以<中升事故线索>为例,进行数据的备份。实现方法INSERT INTO old_warn_info ( id, create_time, update_time, adcode, car_code, car_plate_num, car_t...

需求背景

在大数据量表的情况下,需要备份一张表中的数据,到另外一张表。尽量不要使用框架的对象insert方法,效率很低。尽量使用SQL的原生写法来完成。如下以<中升事故线索>为例,进行数据的备份。

实现方法

INSERT INTO old_warn_info (
	id,
	create_time,
	update_time,
	adcode,
	car_code,
	car_plate_num,
	car_type,
	case_num,
	company_id,
	expect_money,
	follow_time,
	have_shop,
	hint_enter,
	match_eas,
	msg_type,
	real_name,
	remark,
	remarks,
	repeat_data,
	shop_code,
	shop_name,
	src_car_code,
	src_car_plate_num,
	`status`,
	user_name,
	user_phone,
	copy_time 
) SELECT
CONCAT( DATE_FORMAT( SYSDATE( 6 ), '%Y%m%d%H%i%S%f' ), ROUND( RAND() * 10000000000 ) ),
create_time,
update_time,
adcode,
car_code,
car_plate_num,
car_type,
case_num,
company_id,
expect_money,
follow_time,
have_shop,
hint_enter,
match_eas,
msg_type,
real_name,
remark,
remarks,
repeat_data,
shop_code,
shop_name,
src_car_code,
src_car_plate_num,
`status`,
user_name,
user_phone,
DATE_FORMAT( CURDATE(), '%Y-%m-%d' ) 
FROM
	warn_info 
WHERE
	create_time < '2022-01-01'

其中,上面大部分都是字段数据的直接拷贝。考虑到新表中的ID格式不同,特别使用的时间戳和随机数重新标记。

类似的数据备份相似的写法。在大数据拷贝的时候,性能比较卓越。可以直接在Navicat中执行,或者通过Java执行。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。