Linux中使用Cron定時執(zhí)行SQL任務的實現(xiàn)步驟
前言
演示數(shù)據需要每天更新監(jiān)控數(shù)據,不想手動執(zhí)行,想到以下解決方案
- navicat 創(chuàng)建定時任務
- java服務定時執(zhí)行
- linux crontab 定時執(zhí)行sql腳本
一、方案分析
我選擇了第三個方案
- 方案一需要本地navicat運行時才可以執(zhí)行定時,當周末或請假等未開機情況下,數(shù)據得不到更新
- 方案二成本高,服務表示自己不純潔了 O(∩_∩)O
- 方案三還不錯,什么?不會?我教你??!
二、使用步驟
我的數(shù)據庫是kingbase,根據自己的數(shù)據庫適應性調整
1.準備腳本
- sql文件
test.sql
-- 天氣監(jiān)測數(shù)據 UPDATE "natural_monitor"."weather_monitor_data" SET data_time = data_time :: TIME + CURRENT_DATE;
- 執(zhí)行sql文件的執(zhí)行文件
sql_script.sh
#!/bin/bash cd /data/Kingbase/ES/V8/KESRealPro/V008R006C007B0024/Server/bin password=數(shù)據庫密碼 ./ksql -p 54321 -d 數(shù)據庫名稱 -U 數(shù)據庫賬號 -f /data/cron/*.sql
2.crontab腳本執(zhí)行
crontab -e
0 12 * * * /data/cron/sql_script.sh >> /data/cron/log_info.out 2>&1 &
踩坑
- 不知道ksql 路徑
因為kingbase安裝的驅動是pgsql的,所以開始查的方向是psql,但是服務器上沒有這個文件,后來發(fā)現(xiàn)kingbase對應的是ksql
cd / find -name ksql
沒有權限執(zhí)行ksql
查到的ksql路徑是/data/Kingbase/ES/V8/KESRealPro/V008R006C007B0024/Server/bin
所以運行腳本改為password=數(shù)據庫密碼 ./data/Kingbase/ES/V8/KESRealPro/V008R006C007B0024/Server/bin/ksql -p 54321 -d 數(shù)據庫名稱 -U 數(shù)據庫賬號 -f /data/cron/*.sql,結果查不到ksql路徑。
嘗試更換服務器用戶為kingbase依舊無效。
解決方法: 先cd到ksql目錄,后執(zhí)行./ksql/data/cron/update_status_nohup.out目錄沒有權限
采用root用戶去執(zhí)行crontab,各個用戶之間的crontab是隔離的。記得校準服務器時間,或者查詢好服務器時間
到此這篇關于Linux中使用Cron定時執(zhí)行SQL任務的實現(xiàn)步驟的文章就介紹到這了,更多相關Linux Cron定時執(zhí)行SQL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux中如何修改~/.bashrc或/etc/profile設置環(huán)境變量
這篇文章主要介紹了Linux中如何修改~/.bashrc或/etc/profile設置環(huán)境變量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05

