Doris之分区分桶表的insert overwrite实现(二)
分区表的创建和重建自动化脚本,如下
############################################################################################
### author
### 适用范围: ①分区表刚创建,昨天分区未创建时 ②分区表的昨日分区数据需要删除,删除后再重建
#############################################################################################
#!/bin/sh
day=`date +%Y-%m-%d`
ytday=`date -d '-1 day' +%Y-%m-%d`
ndt=`date -d '-1 day' +%Y%m%d`
# Doris database
doris_database=wm_app
# Doris Table
doris_table=test_pt_rt_modifit_kpi
fir_sql="use $doris_database;
--【1】关闭动态分区
ALTER TABLE $doris_table SET (\"dynamic_partition.enable\" = \"false\");
--【2】删除昨日分区
ALTER TABLE $doris_table DROP PARTITION p$ndt;
"
sen_sql="use $doris_database;
--【3】创建昨日分区
ALTER TABLE $doris_table ADD PARTITION p$ndt VALUES [(\"$ytday\"), (\"$day\"));
--【4】开启动态分区
ALTER TABLE $doris_table SET (\"dynamic_partition.enable\" = \"true\");
"
echo $fir_sql
#这个命令后面切勿加其他命令,否则会影响if判断
mysql -u用户名 -p'密码' -h 主机地址 -P 端口号 -e "$fir_sql"
if [[ $? -eq 0 ]];
then
echo "====== 删除昨日分区成功,重新创建昨日分区 ======="
echo $sen_sql
mysql -u用户名 -p'密码' -h 主机地址 -P 端口号 -e "$sen_sql"
else
echo "====== 删除昨日分区失败,为此表创建昨日分区 ======="
echo $sen_sql
mysql -u用户名 -p'密码' -h 主机地址 -P 端口号 -e "$sen_sql"
fi