shell 批量修改數據庫

  

  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;
相關文章
相關標籤/搜索