MySql 记一次游标的使用(数据抽取以及写录)
背景:游戏数据存于内存,5分钟过后才会写到数据库,我这里需要对数据进行统计,根据项目中数据的分类来看,各种分类的数据都会写入到一张表里面,便于数据的统计搜索(分类查询统计),不想改动代码,做个mysql定时任务执行sql进行数据的写入:
查询出满足的数据,循环数据row组合自己的数据col写入另外的表
注意数据类型,最好先来2个字段测试下
-- 其中涉及的时间转化函数自己去掉
-- 声明变量
BEGIN DECLARE A INT; DECLARE B VARCHAR(100); DECLARE C INT; DECLARE D DATETIME; DECLARE E INT; DECLARE flag BOOLEAN DEFAULT TRUE; DECLARE cur CURSOR for
-- 查询的数据集合 SELECT BB.Id,CONCAT('玩家:【',BB.sm_name,BB.sm_Gameid,'】消耗...'),AA.amount,from_unixtime(AA.happend_time),BB.SM_DIAMOND FROM logdb.tbllog_gold as AA JOIN tbl_avatar as BB ON AA.role_id=BB.id WHERE AA.happend_time >= unix_timestamp( SUBDATE(now(), INTERVAL 10 MINUTE) ) AND AA.reason_1 = 1133;
-- 查询的数据集合 END
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = FALSE;
OPEN cur;
FETCH cur INTO A,B,C,D,E;
-- 循环数据
while flag do
INSERT t_DiamondStreamRecord(streamType,sourceid,direction,GamePlayerUserID,ChangeAmount,CreateTime,RecordDesc,BeforeAmount,AfterAmount)
VALUES(6,1,1,A,C,D,B,E-C,E);
FETCH cur INTO A,B,C,D,E; COMMIT;
END while;
-- 写入后关闭
CLOSE cur;
END