当前位置: 代码网 > it编程>数据库>MsSqlserver > Linux中使用Cron定时执行SQL任务的实现步骤

Linux中使用Cron定时执行SQL任务的实现步骤

2024年11月12日 MsSqlserver 我要评论
前言演示数据需要每天更新监控数据,不想手动执行,想到以下解决方案navicat 创建定时任务java服务定时执行linux crontab 定时执行sql脚本一、方案分析我选择了第三个方案方案一需要本

前言

演示数据需要每天更新监控数据,不想手动执行,想到以下解决方案

  • navicat 创建定时任务
  • java服务定时执行
  • linux crontab 定时执行sql脚本

一、方案分析

我选择了第三个方案

  • 方案一需要本地navicat运行时才可以执行定时,当周末或请假等未开机情况下,数据得不到更新
  • 方案二成本高,服务表示自己不纯洁了 o(∩_∩)o
  • 方案三还不错,什么?不会?我教你啊!

二、使用步骤

我的数据库是kingbase,根据自己的数据库适应性调整

1.准备脚本

  • sql文件 test.sql
-- 天气监测数据
update "natural_monitor"."weather_monitor_data" 
set data_time = data_time :: time + current_date;
  • 执行sql文件的执行文件 sql_script.sh
#!/bin/bash
cd /data/kingbase/es/v8/kesrealpro/v008r006c007b0024/server/bin
password=数据库密码 ./ksql -p 54321 -d 数据库名称 -u 数据库账号 -f /data/cron/*.sql

2.crontab脚本执行

crontab -e
0 12 * * * /data/cron/sql_script.sh >> /data/cron/log_info.out 2>&1 &

踩坑

  • 不知道ksql 路径
    因为kingbase安装的驱动是pgsql的,所以开始查的方向是psql,但是服务器上没有这个文件,后来发现kingbase对应的是ksql
cd /
find -name ksql
  1. 没有权限执行ksql
    查到的ksql路径是/data/kingbase/es/v8/kesrealpro/v008r006c007b0024/server/bin
    所以运行脚本改为password=数据库密码 ./data/kingbase/es/v8/kesrealpro/v008r006c007b0024/server/bin/ksql -p 54321 -d 数据库名称 -u 数据库账号 -f /data/cron/*.sql,结果查不到ksql路径。
    尝试更换服务器用户为kingbase依旧无效。
    解决方法: 先cd到ksql目录,后执行./ksql

  2. /data/cron/update_status_nohup.out目录没有权限
    采用root用户去执行crontab,各个用户之间的crontab是隔离的。

  3. 记得校准服务器时间,或者查询好服务器时间

到此这篇关于linux中使用cron定时执行sql任务的实现步骤的文章就介绍到这了,更多相关linux cron定时执行sql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com