首页 > 系统相关 >shell脚本

shell脚本

时间:2022-08-16 15:33:33浏览次数:48  
标签:脚本 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 数据异常,请跟进。" [email protected]
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表数据湖同步数据运行出错,请通知下游并关注跟进问题" [email protected]
fi

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

相关文章

  • yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因
    使用VSCode的命令行安装yarn(npminstallyarn-g),安装成功后,查看版本报错原因:命令行执行策略,默认设置为Restricted不加载配置文件或运行脚本。需变更设置为RemoteSi......
  • Linux下使用sh脚本每分钟检查某个进程是否在运行,如果没有运行则重新启动进程
    一、需求描述Linux服务器上的某些进程总是被其他人kill掉导致网页或一些内容无法访问,因此需要定时检查进程是否还在运行,如果被kill掉了就重启。 二、实现方法1、......
  • shell特殊字符
    ;分号连续运行命令#ifdowneth0;ifupeth0 |管道正则表达式中表示或者#echo"ooooee"|egrep'(oo|ee)'{2}表示匹配oooo或者eeee的字符前面命令的标......
  • shell 正则匹配
    if[["abcyyy13554221547HelloxxxWorld"=~yyy([0-9]{11})(Hello)xxx(.*)]]thenechoTheregexmatches!echo$BASH_REMATCHec......
  • Shell语言开发基础模板
    内容概要基础阶段脚本处理/测试变量操作符分支结构之if分支分支结构之case分支循环结构之while循环循环结构之for循环函数脚本处理/测试#脚本处理window回车是......
  • XShell7和Xftp免费下载,亲测可用
    作为一个后端开发,我相信会经常和服务器打交道,我们需要连接服务器,查看服务状态,查看日志,还需要向服务器上传jar包等等,那么就很需要一款好用的服务器连接工具了。笔者工作这......
  • ES Scripts脚本相关
    Scripting是ES提供的一种支持自定义编程的用于复杂查询的脚本语言.主要用于复杂的计算,其类型主要有Painless、expressions等等,下面开始分析,运行数据在ES聚合查询中,自......
  • linux通过xshell远程登录失败
    状态描述:确认ssh配置完好,重启后查看日志也正常。openssh版本8.5。通过xshell远程连接,提示服务器拒绝连接。处理过程:由于是虚拟机,之前通过vnc连接的一个终端还未关闭。修......
  • JSP脚本和JSP入门学习
    JSP的脚本:JSP定义Java代码的方式<%代码%>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。<%!代码%>:定义的java代码,在jsp转换后......
  • shell重复执行命令直到成功
    在我们从dockerhub或github上下载的时候,经常会碰到超时的问题,一般就是多尝试下载几次就可以了,但手动重复执行很麻烦,下面是自动检测若未成功执行就自动再次执行命令的代码:w......