注意: 增加日期变量 p_date ,为了防止start_date在while循环过程中,发生变化,变为和end_date一样的值。
#! /bin/bash
start_date=${1:-`date -d "-32 day" "+%Y-%m-%d"`}
end_date=${2:-`date -d "-1 day" "+%Y-%m-%d"`}
table_name="vn0c43l.mid_dim_hyper_shop_div_dept_day_v2"
# hive 批量删除分区
sql_dp="alter table ${table_name} drop partition (dt>=${start_date}, dt<=${end_date})"
hive -e "${sql_dp}"
# hive 批量添加分区
sql_pre="alter table ${table_name} add if not exists "
while [ `date -d ${start_date} +%s` -le `date -d "$end_date" +%s` ]
do
p_date=${start_date}
sql="partition(ts="\'"${p_date//-/}"\'") "
tsql=`echo $tsql $sql`
p_date=$(date -d"${p_date} 1 day" +%Y-%m-%d)
done
hive -e "$sql_pre $tsql"