Linux
如何在 shell 腳本中獲取上一個日期的數據?
請參考下面的腳本。
#!/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 伺服器,所以我想到了兩種解決方法例如今天的前一個日期的數據是 2020 年 4 月 16 日,因此如果腳本在今天凌晨 2 點執行,它將獲取 2020 年 4 月 15 日的數據。
或者
我將這個腳本安排在一天結束時,比如晚上 11:58 或類似的時間。
在您看來,這是最好的方法,您也可以告訴我晚上 11:58 的 cronjob。
如果我考慮獲取前一個日期的數據,則應進行更改以獲得該數據。
謝謝和問候, 薩加爾曼達爾
在您的情況下,我肯定會限制查詢,即無論何時開始查詢,您都可以從一天中獲取記錄。這樣,您可以在凌晨 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)儲存憑據並稍後在像您這樣的腳本中使用它們。