数据分析工作中shell脚本的使用

本文通过实际工作中的例子,介绍了如何使用Shell脚本进行数据处理,包括创建和赋权脚本、while和for循环的运用、字符串操作、获取系统时间、数组使用以及重定向等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要通过工作中shell脚本案例,介绍shell脚本中常用知识点

下面的这个脚本表示使用sqoop把生产数据库mysql中的商户交易数据导入到hive数据库,且生产数据库中商户交易数据是分库分表存放的(10个库100个表中),分表分库原则根据商户F_merchant_id来分的,比如说一个商户号F_merchant_id=‘xxxxx855’,可以看到商户号是倒数第三位是8,分库的时候会存放到第8个数据库中,最后两位数字是55,所以分表的时候会存放到第55张表中。所以对于商户号xxxxx855的所有交易数据会存放到第8个数据库,第55个表中。

#抽取从2019年1月4号到2019年2月10日的所有商户交易数据
begin_date="20190104" #定义开始时间变量
end_date="20190210"  #定义结束时间变量


while [ "$begin_date" -le "$end_date" ]    #$begin_date表示参数的引用
do
    y=${begin_date:0:4}
    m=${begin_date:4:2}
    d=${begin_date:6:2}

    echo "${y}-${m}"      
    begin_date=$(date -d "${begin_date}+1days" +%Y%m%d)
    
    y1=${begin_date:0:4}
    m1=${begin_date:4:2}
    d1=${begin_date:6:2}

  
for ((db=0;db<=9;db=db+1)) #从0到9,每次加1,共迭代10次  循环10个库
do
   for ((j=0;j<=99;j=j+10))
  do
  	querystr=''
  	for((k=1;k<=10;k++))#一次union 10个表
  		do
  		   tb1[$k]=$[(${j}+k-1)/10]  #相除
  		   tb2[$k]=$[(${j}+k-1)%10] #取余
  		   table[$k]="select F_transaction_id,F_order_id,F_merchant_id from datafrog${db}.t_transaction_operation_by_merchant_${tb1[$k]}${tb2[$k]} where  F_time>='${y}-${m}-${d}' AND F_time<'${y1}-${m1}-${d1}'  "
  		
  		    if [ $k -gt 1 ]
                        then
                                querystr="${querystr} union all ${table[$k]} "

                        else
                                querystr="${table[$k]}"
                   fi
  		   
  	
  		done
#下面的脚本大家不需要看,是为整体效果做的展示
sq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值