备份表数据,将历史数据加载到新表中(hive)

if [ $# -eq 2 ];then
    yesterday=`date -d yesterday +%Y-%m-%d`
    stat_date=${yesterday}
elif [ $# -eq 3 ];then
    stat_date="$3"
else
    echo "wrong arg[] number"
    exit 1
fi


cur_date=`date +%Y%m%d`
#取源数据库和目标表编号前辍


dbname=$1
tab_name=$2


# hive元数据库配置信息
function get_hive_params()
{


while read line;do
    eval "$line"
done < /disk4/azkaban/shell/cfg/.hive_metastore_config


# 判断是否获取到对应数据库用户密码
if [ -z "$username" ] || [ -z "$password" ]; then
       echo "The auth info of has not been configured"
        exit 1;
fi


}
get_hive_params "hiv"


hiv_user=$username
hiv_pwd=$password
hiv_ip=$ip
hiv_port=$port


#取hive元数据
function get_hive_col()
{
clset=`mysql -h$hiv_ip -u$hiv_user -p$hiv_pwd -P$hiv_port  --default-character-set=utf8 -Dhive  -N -e"
select
case when t3.INTEGER_IDX=0 then
upper(t3.column_name)
else
concat(',',upper(t3.column_name))
end mm
from TBLS t1
left join SDS t2
on t1.sd_id=t2.sd_id
left join COLUMNS_V2 t3
on t2.cd_id=t3.cd_id
left join DBS t4
on t1.db_id=t4.db_id
where t1.tbl_name =lower(concat('$cfg_tgtotablecn','$tab_name'))
and t4.name='dc_ods'
order by t3.INTEGER_IDX;
"
`
if [ -z "$clset" ]; then
echo "$table_name does not exist."
else
clset1=" SELECT "$clset",DT FROM dc_ods."$cfg_tgtotablecn$tab_name$cur_date"_bak;"
fi


echo $clset1


#执行修改备份数据表
sqlalt=" use dc_ods; ALTER TABLE "$cfg_tgtotablecn$tab_name" RENAME TO "$cfg_tgtotablecn$tab_name$cur_date"_bak;"
echo $sqlalt>/disk4/ddl/dsql/$cfg_tgtotablecn$tab_name"_alter.sql"


hive -f /disk4/ddl/dsql/$cfg_tgtotablecn$tab_name"_alter.sql"
echo "备份完成"
#执行drop stage表


sqldrp=" use dc_stage; drop table "$cfg_tgtstablecn$tab_name";"


echo $sqldrp >/disk4/ddl/dsql/$cfg_tgtstablecn$tab_name"_drop.sql"


hive -f /disk4/ddl/dsql/$cfg_tgtstablecn$tab_name"_drop.sql"


echo "清除表完成"


#调用建表功能进行建stage,ods层表


sh src_sys_create_one_table_huihuahua.sh $dbname $tab_name


hive -f /disk4/ddl/stgddl/$cfg_tgtstablecn$tab_name".sql"


hive -f /disk4/ddl/odsddl/$cfg_tgtotablecn$tab_name".sql"


echo " 新表建完"


#执行历史数据迁移到新表结构


hive -f /disk4/ddl/dsql/$cfg_tgtotablecn$tab_name"_insert.sql"


echo "数据迁移完成"


}


#读取映射表
function get_map_table()
{
 mapna=`/usr/bin/mysql -u*** -p*** -h*** -P3306 --default-character-set=utf8 -Dmeta  -N -e"
 select concat(tableSchema,'#',tgtotablecn,'#',tgtstablecn)
from (
select tableSchema,tgtotablecn,tgtstablecn from t_map_dbs_cfg where lower(tableSchema) =lower('$dbname')
)tmx;
 "`
cfg_tableSchema=`echo $mapna | awk -F'#' '{print $1}'`
cfg_tgtotablecn=`echo $mapna | awk -F'#' '{print $2}'`
cfg_tgtstablecn=`echo $mapna | awk -F'#' '{print $3}'`




}










get_map_table
get_hive_col




if [ $? -eq 0 ]
then
    echo " prom success!"
else
    echo " prom Error Failed"
fi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值