ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell脚本

2022-08-16 15:30:41  阅读:159  来源: 互联网

标签:脚本 src shell name -- count echo sql


##
## @Title : to_omp_quota_config
## @Kind : shell
##
## @Author:
##
## @Tips : This is a UNCHOSEN TEMPLATE
## AND you could write down your code below comment
## OR getting rid of the comment before that
## modify by Bob Wu in 2022-06-23

export TZ='CST-8'


#供数的表
src_database=cn_dw_dev_dl_tables
src_tab_name=dws_omp_common_upc_info_d
src_database1=cn_dw_dev_dl_tables
src_tab_name1=dws_omp_common_quota_config_d
src_database2=cn_dw_dev_dl_tables
src_tab_name2=dws_omp_common_upc_info_check


#退出函数
exit_script()
{
exit 1
}

#验证是否表无数据
sql_count_result=`hive -e "set tez.queue.name=smartops;select count(1) as cnt from $src_database.$src_tab_name a "`
sql_count=`echo $sql_count_result | tr -cd "[0-9]"`

if [ $sql_count -eq 0 ]
then
echo "表 $src_database.$src_tab_name 数据为 $sql_count ,数据有异常,请跟进。" | mail -s "上游表 $src_database.$src_tab_name 数据异常,请跟进。" vn53n59@email.wal-mart.com
echo "由于表数据异常sqooop任务中止。"
exit_script
fi
echo "表的数据量为:"$sql_count

##获取数据提取时间
current_time_result=`hive -e "set tez.queue.name=smartops;select created_time as cnt from $src_database1.$src_tab_name1 limit 1"`
current_time=`echo $current_time_result | awk -F "|" '{printf $4}'`

#校验:如数据量和上次推送数据量相差超过30%,则发邮件报警,并中止sqoop导数,并修改OMP数据create_time为当前日期
sql_count_result2=`hive -e "set tez.queue.name=smartops;select count(1) as cnt from $src_database2.$src_tab_name2 a "`
sql_count2=`echo $sql_count_result2 | tr -cd "[0-9]"`
sql_cnt_result=`echo "scale=5;(($sql_count2-$sql_count)/$sql_count2)*100" | bc | awk '{printf "%.2f", $0}' | awk '{print int($0)}'`
echo "表2的数据量为:"$sql_count2
echo "校验结果为:" $sql_cnt_result
if [ $sql_cnt_result -lt 30 ]
then
export sqoop_path=/usr/bin
hostname="PCNNT57020CNSQL\ni1:14481"
user=username
password='password'
database='promotion-e2e'
table=common_category_info
columns=dept_nbr,dept_name_cn,dept_name_en,category_nbr,category_name_ch,category_name_en,sku_store_total,created_time,create_user
export_dir=hdfs://cnprod1ha/warehouse/tablespace/external/hive/$src_database1.db/$src_tab_name1
#清空sqlserver表中的数据 再执行灌入数据操作
${sqoop_path}/sqoop eval \
#从HDFS每日全量插入SQL server目标表中
${sqoop_path}/sqoop export -Dmapred.job.queue.name=bdpprod \
--connect "jdbc:sqlserver://$hostname;DatabaseName=$database" \
--username $user \
--password $password \
--table $table \
--columns $columns \
--export-dir $export_dir \
--fields-terminated-by '\001' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--num-mappers 10 \
--batch

echo "删除历史数据开始"
${sqoop_path}/sqoop eval \
--connect "jdbc:sqlserver://$hostname;DatabaseName=$database" --username $user --password $password --query "DELETE from $table where created_time<dateadd(day,0,'${current_time}');"

echo "删除历史数据结束"$current_time
fi

 

execute_result=$?
if [ $execute_result -ne 0 ]
then
echo "$database.dbo.$table表数据湖同步数据运行出错,请通知下游并关注跟进问题" | mail -s "OMP的$database.dbo.$table表数据湖同步数据运行出错,请通知下游并关注跟进问题" vn53n59@email.wal-mart.com
fi

标签:脚本,src,shell,name,--,count,echo,sql
来源: https://www.cnblogs.com/qianleihu/p/16591720.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有