shell功能强大,语法简单,在Linux上作一些运维工做特别适合。通常简单的补数,删数,定时清理日志。批量修改redis,批量修改数据……均可以经过shell脚本实现。mysql
前几天我在数据库里面新建了一张表A,须要把数据从表B 查询出来而后导入到A,大概就是这样的SQL 语法 insert into a(field……) select field…… from B ; 若是直接写这个语句自己是可行的。可是一旦B表数据量大了就会中断执行,由于数据量大了会内存溢出。所以我找出一个日期字段,每次只查询B一天的数据而后导入到A. insert into a(field……) select field…… from B where load_date='today'。若是只有几天的数据执行这个SQL 几回也就罢了。可是若是须要导入一年就得执行365次。所以就想到了shell来解决。redis
下面是一个例子,首先按照日期字段查询tb_api_orde的数据。sql
而后把数据导入到tb_api_validatemailnum,循环执行保证一年的数据都被导入shell
#! /bin/bash today=20170101; if [ $1 ] then today=$1; fi enddate=`date -d"$today+1year" "+%Y%m%d"`; index=1; for((i=startdate;i<enddate;i=`date "+%Y%m%d" -d"$today+${index}day"`)) do echo "insert into table by date $i"; echo `mysql -hhost -uuser -ppass -Ddatabase <<EOF insert into tb_api_validatemailnum(mailnum,customercode,load_date,authenticate) select mailnum,CUSTOMERCODE,load_date,userkey from tb_api_order where load_date='$i' EOF` index=$((index+1)); done;