kelifan
kelifan
2021-06-18 00:56
采纳率: 100%
浏览 114

mysql如何定时查询数据并建立新表

如题,怎么样让数据库定时每月1日查询下表a取下b、c、d并将数据另外生成一个表,表名为202106这样,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • ledrsnet
    清枫cc 2021-06-18 08:40
    已采纳
    -- 启用事件调度器
    SET GLOBAL event_scheduler = 1;
    
    -- 创建任务存过
    DELIMITER $$
    CREATE PROCEDURE PROC_TEST1()
    BEGIN
    	SET @sqlstr = CONCAT(' CREATE TABLE test_',DATE_FORMAT(now(),'%Y%m') ,' AS SELECT * FROM tb1');
    	PREPARE stmt1 FROM @sqlstr ;
    	EXECUTE stmt1 ; 
    END $$
    DELIMITER ;
    
    -- 创建每月定时任务
    CREATE EVENT TEST_MONTH_JOB
    ON SCHEDULE EVERY 1 MONTH 
    STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 0 HOUR)
    DO
    CALL PROC_TEST1();
    
    生成如下表
    test_202106
    点赞 评论
  • technologist_28
    CSDN专家-微编程 2021-06-18 03:59

    Mysql有一个方法。就是将查询的结果生成一个表。

    create table new_table_name as select * from (your_sql) as sql_table;

    new_table_name 替换为创建表名
    your_sql 替换为sql语句

     

    至于定时生成一个表的话,这需要使用到定时任务调度器azkaban。

     

    如果对你有帮助的话,请采纳一下哦,谢谢!

    点赞 评论
  • qq_15769939
    小P聊技术 2021-06-20 12:26

    为啥你要借助数据库操作呢,你应该是语言的定时任务去做,比如spring quartz,等等,直接在数据库层面做的话,感觉不太好。

    你可以使用脚本的形式去做,shell,linux下:

    shell脚本操作mysql数据库 (部份参考) https://blog.51cto.com/devin223/1693248

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-06-21 18:26

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论
  • diandianxiyu
    邻座的小雨同学 2021-06-22 18:22

    建表属于消耗资源非常大的事情,不建议这么搞

    点赞 评论

相关推荐