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

 

posted @ 2018-03-21 16:37  Frank.Deng  阅读(898)  评论(0编辑  收藏  举报