
請參考下面的腳本。
#!/usr/bin/bash
#scirpt to connect with db
master_db_user=''
master_db_passwd=''
master_db_port='3306'
master_db_host=''
master_db_name='uppcldashboard'
Now=$(date +"%d-%m-%Y")
date=$(date +"%F")
#Preparing script
#SQL_Query='select * from test_table;'
#MySql Command to connect to a database
#mysql -u$master_db_user -p$master_db_passwd -D$master_db_name -e "select * from uppcl_amount_details into outfile '/created_files/uppcl.csv' fields terminated by ',' lines terminated by '\n';"
mysql -u$master_db_user -p$master_db_passwd -D$master_db_name -e "select *,IFNULL(ref_4,0),IFNULL(ref_3,0),IFNULL(ref_7,0),IFNULL(ref_8,0),date_format(posting_date,'%Y-%m-%d') from uppcl_amount_details where posting_date>=CURDATE() into outfile '/created_files/uppcl.csv' fields terminated by ',' lines terminated by '\n';"
mv /created_files/uppcl.csv /created_files/offline_collection$Now.csv
sed -i "1i id","Cashier_id","Cheque_no","collection_amount","collection_type","Posting_date","Discom","Division_Code","Division_Name","Head_cashier_id","ref_3","ref_4","ref_5","ref_6","ref_7","ref_8","Tran_Date","Status","Posting_Updated_Date" /created_files/offline_collection$Now.csv
echo "End of the Script"
好的,這個腳本基本上從當前日期的 MySQL 伺服器取得數據,我必須安排這個腳本,以便它能夠取得當前日期的數據。但這裡有一個問題,資料以連續的方式出現,所以我不能只安排在凌晨 2 點,因為它將在凌晨 2 點之前將資料輸入 MySQL 伺服器,所以我想到了兩種解決方法例如,今天的前一個日期的資料是16/04/2020,因此如果腳本今天凌晨2 點運行,它將獲取15/04/2020 的資料。
或者
我以這樣的方式安排此腳本,例如在一天結束時,例如晚上 11:58 或類似的時間。
您認為這是最好的方法,您也可以告訴我晚上 11:58 的 cronjob 嗎?
如果我考慮獲取前一個日期的數據,那麼應該進行更改以獲取該數據。
謝謝和問候, 薩加爾·曼達爾
答案1
在您的情況下,我肯定會限制查詢,無論查詢何時啟動,您都會獲得一天的記錄。這樣,您就可以在凌晨 2 點或任何時間開始。這樣,如果當時應該執行腳本時出現問題,您可以稍後手動執行該腳本。
在您的腳本中將 where 條件變更為如下所示:
where DATE(posting_date) = DATE(DATE_ADD(CURDATE(), INTERVAL -1 DAY))
這樣,您只能獲得具有昨天日期的記錄。
如果您想使用 bash 變數來執行此操作,請以適合 MySql 的形式取得當前日期:
date=$(date --rfc-3339=date)
的輸出$date
採 MySql 可辨識的形式:
2020-04-16
然後設定一個像這樣的where條件:
where DATE(posting_date) = DATE(DATE_ADD('$date', INTERVAL -1 DAY))
如果更改interval -1 day
,您可以獲得任意一天的資料。
還有一件事。不要從腳本向 MySql 提供使用者名稱和密碼。這樣,密碼就會被洩露,遲早你會後悔的。使用mysql_config_editor
(https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html)來儲存憑證並稍後在像您這樣的腳本中使用它們。