请参考下面的脚本。
#!/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)来存储凭据并稍后在像您这样的脚本中使用它们。