批量删除hive表分区

执行shell脚本批量删除hive表分区

执行命令: sh delete_partitions.sh schema.table_name 2017-11-01 2017-12-01


delete_partitions.sh脚本如下:

#!/bin/sh


if [ $# == 3 ]; then
    begin_date=`date -d "+0 day $2" +%Y-%m-%d`
    end_date=`date -d "+0 day $3" +%Y-%m-%d`
    date=${end_date}
    sql=''
    while [[ "${date}" > "${begin_date}" || "${date}" = "${begin_date}" ]]
          do
              echo $date
              sql=${sql}"ALTER TABLE $1 DROP IF EXISTS PARTITION(date = '$date');"
              echo ${sql}
              date=`date -d "$date -1 days" +"%Y-%m-%d"`
          done 
    echo "hive -e '${sql}' "
    hive -e "${sql}"
elif [ $# == 1 ]; then
    date=`date -d -1days '+%Y-%m-%d'`
    echo "hive -e 'ALTER TABLE $1 DROP IF EXISTS PARTITION(date = '$date');'"
    hive -e "ALTER TABLE $1 DROP IF EXISTS PARTITION(date = '$date');"
else 
    echo 'Parameter error!'
fi


猜你喜欢

转载自blog.csdn.net/fanlying/article/details/78688003