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

这篇文章主要通过工作中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
  		   
  	
  		don
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).
### 回答1: 工作常用的shell脚本包括: 1. 自动化部署脚本:用于自动化部署应用程序或服务,包括安装依赖、配置环境、启动服务等。 2. 日志分析脚本:用于分析日志文件,提取关键信息,如错误日志、访问日志等。 3. 数据备份脚本:用于定期备份数据,保证数据的安全性和可靠性。 4. 定时任务脚本:用于定时执行任务,如定时清理临时文件、定时发送邮件等。 5. 系统监控脚本:用于监控系统状态,如CPU、内存、磁盘空间等,及时发现问题并解决。 6. 数据处理脚本:用于处理数据,如数据清洗、数据转换、数据分析等。 7. 网络管理脚本:用于管理网络,如配置网络、检测网络连接、测试网络速度等。 8. 安全管理脚本:用于加强系统安全性,如检测系统漏洞、加强密码策略、限制用户权限等。 ### 回答2: Shell脚本是一种用于自动化任务的编程语言,可以在Unix或类Unix操作系统上运行。在工作shell脚本是非常重要的,可以帮助我们在多个任务之间切换,快速完成重复性工作和自动化一些流程。以下是工作常用的shell脚本: 1.备份脚本:备份脚本是最常用的脚本之一,可以帮助我们在指定时间将重要文件备份到云端或其他介质上,保障数据安全。 2.日志脚本:日志脚本是非常重要的脚本之一,它可以帮助我们追踪应用程序的运行情况,定位错误或异常。通常我们会定期清理日志文件,以免过多的存储对服务器造成影响。 3.批量操作脚本:批量操作脚本可以帮助我们在多台服务器上执行同样的操作,例如批量安装或更新软件包,批量修改权限等。这可以简化我们的操作,提高我们的效率。 4.监控脚本:监控脚本可以帮助我们对服务器上的进程和资源使用情况进行监控,并在异常情况下发送警报。 5.自动化脚本:自动化脚本可以帮助我们在特定条件下自动执行某些操作,例如在完成某项任务后自动收集日志文件、自动发送邮件等。 总之,shell脚本是一种非常灵活和强大的工具,在工作我们可以通过使用不同的脚本来完成不同的任务,从而大大提高我们的效率和工作质量。但是在编写脚本时需要注意一些安全问题,例如脚本执行的权限、文件权限、脚本是否含有敏感信息等,以免造成信息泄露或其他安全漏洞。 ### 回答3: Shell脚本工作扮演着非常重要的角色,因为它们可以自动化冗长且重复的任务,提高工作效率。以下是一些常用的Shell脚本: 1. 自动备份脚本:这种脚本可以在指定时间内自动备份数据库或文件,以避免数据丢失。备份的频率和数量可以根据需要进行调整。 2. 自动化部署脚本:这种脚本可以自动化部署应用程序或系统更新,以减少手动操作和提高效率。 3. 日志分析脚本:这种脚本可以分析日志文件并生成有用的统计数据,例如错误和访问次数等,以帮助有效地监控和维护系统。 4. 网络监控脚本:这种脚本可以监控网络连接和数据库连接,保持系统的稳定性和安全性。 5. 任务调度脚本:这种脚本可以预定和自动化任务,以确保任务按时完成。 6. 系统设置脚本:这种脚本可以对系统进行优化和调整,以提高性能和稳定性。 7. 自动化测试脚本:这种脚本可以在应用程序发布之前自动化测试,以确保应用程序的质量。 以上是常用的Shell脚本,当然,还有其他的脚本可根据实际情况和需要使用Shell脚本使用需要具备一定的Linux基础,但任何人都可以学习和掌握,以提高工作效率和减少手动操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值