• 用navcat编写定时任务调用存储过程


    最近项目需要改动比较大,数据库结构也有所改变,这时就需要转移旧数据到新库中

    第一时间想到的是用代码操作,由于两个库表结构不同,实体什么的得需要重新生成

    并编写转移代码,这将是很大的工作量;

    然后就想着

    用脚本解决问题,方式如下:

    先编写脚本

    #!/bin/bash  
    # Define log  
    TIMESTAMP=`date +%Y%m%d%H%M%S`  
    LOG=call_sql_${TIMESTAMP}.log  
    echo "Start execute sql statement at `date`." >>${LOG}
    # execute sql stat
    mysql -u**** -p**** -e "
    tee /home/credit_back/temp.log 
    #转移用户登录表
    INSERT IGNORE INTO credit_db.c_user_login_info(username, password, enabled, realname, phone, company, registration_time, last_login_time, dk_id, channel_id)  SELECT username, password, enabled, realname, phone, company, registration_time, last_login_time, dk_id, channel_id FROM credit.c_user_login_info;
    #更新注册来源,账号状态
    UPDATE credit_db.c_user_login_info SET register_source='h5',account_status=1 WHERE register_source is null;
    notee  
    quit"
    
    echo -e "
    ">>${LOG}  
    echo "below is output result.">>${LOG}  
    cat /home/credit_back/temp.log>>${LOG}  
    echo "script executed successful.">>${LOG}  
    exit;

    然后写定时任务执行该脚本

    链接数据库服务器,输入命令

    crontab -e

    编写定时任务

    #定时调用脚本,每小时执行一次
    0 */1 * * * /bin/sh /home/credit_back/credit_db_backup.sh

    查看定时任务

    crontab -l

    这种方式是可以解决问题,但是脚本中需要数据库密码,为了安全我

    采用navcat编写定时任务

    首先,打开navcat,查询定时任务是否开启

    show variables like '%sche%';

    此时是关闭的,需要开启

    set global event_scheduler = ON

    定时任务开启后,开始编写存储过程

    如何编写可以搜一下,下面是我的存储过程

    最后编写定时任务,右击新建事件

    即调用刚才写的存储过程

    CALL TransferData()

    设置定时计划,为了测试,每分钟执行一次

     下面就等待1分钟看执行结果了

  • 相关阅读:
    [BJWC2010]外星联络
    [NOI2015]品酒大会
    工艺 /【模板】最小表示法
    [NOI2016]优秀的拆分
    [HEOI2016/TJOI2016]字符串
    [SDOI2016]生成魔咒
    【模板】后缀自动机 (SAM)【SA解法】
    [湖南集训]图森
    [USACO17DEC]Standing Out from the Herd P
    Annihilate
  • 原文地址:https://www.cnblogs.com/java-spring/p/11083678.html
Copyright © 2020-2023  润新知