Shell bash腳本查詢Mysql并簡單處理查詢結(jié)果

最近上線新功能需要初始化數(shù)據(jù),上線前寫好對(duì)應(yīng)的刷數(shù)據(jù)接口,上線后由于部分?jǐn)?shù)據(jù)錯(cuò)誤導(dǎo)致調(diào)用異常。如果修復(fù)好后,還要再發(fā)布一次解決問題。作為只用一次的代碼,反復(fù)發(fā)布很麻煩。這時(shí),突然想起tombkeer大神微博里分享的PPT,能用工具用工具、能用腳本就不要用編譯語言。因此,現(xiàn)學(xué)現(xiàn)賣一下shell腳本做簡單的數(shù)據(jù)處理。

工作中很少自己寫shell腳本,細(xì)節(jié)比較多,把這次學(xué)習(xí)的成果記下來,供日后查閱。

tombkeeper 大神分享的PPT
#!/bin/bash
#author bollenv@qq.com 2018-02-05
#查詢數(shù)據(jù)庫并將查詢結(jié)果做參數(shù)發(fā)送HTTP請(qǐng)求
#SQL查詢結(jié)果列數(shù)
columnNum=2
#通過參數(shù)行數(shù)和行索引位置
function getValue(){
  #調(diào)用方法傳入的第一個(gè)參數(shù),$0 表示方法名
  colIndex=$1
  #調(diào)用方法傳入的第二個(gè)參數(shù)
  rowIndex=$2
  #定位到指定行,數(shù)組索引0為第一個(gè)元素
  #數(shù)學(xué)算術(shù)運(yùn)算使用 $((a+b))
  idx=$(($columnNum*$colIndex+$rowIndex-1))
  #判讀索引值是否大于結(jié)果行數(shù)
  #${#arrays_name[@]}獲取數(shù)組長度
  if [ $idx -le ${#user_attrs[@]} ]; then
    echo ${user_attrs[$idx]}
  fi
}
#數(shù)據(jù)庫查詢結(jié)果,結(jié)果為每行從左到右每個(gè)單元格為一行(首行為SQL查詢結(jié)果的列名)
#數(shù)組默認(rèn)分割符號(hào)是空格,當(dāng)查詢結(jié)果中包含空格字符時(shí),會(huì)導(dǎo)致一個(gè)字段被分割開,例如:create_time 2017-01-01 12:12:12 會(huì)變成兩條 
#2017-01-01
#12:12:12
#因此,IFS=$'\t'采用tab來分割字段的值
#mysql -u 用戶名 -p 密碼 -h 主機(jī)host 數(shù)據(jù)庫名 -e 執(zhí)行腳本內(nèi)容
IFS=$'\t'
user_attrs=(`mysql -udb_user -pdb_pwd -hdb_host dbname -e 'SELECT \`city_name\`,\`name\` FROM t_user"'`)
#循環(huán)遍歷查詢結(jié)果行數(shù)
for (( i=$columnNum; i<=${#user_attrs[@]}; i=i+1))
do
   #查詢結(jié)果name為參數(shù)name的值,name為第二列,rowIndex傳入 2
   #調(diào)用方法需要用``包上
   name=`getValue $i 2`
   #查詢結(jié)果city_name為city_name的值,city_name為第一列,rowIndex傳入 1
   city_name=`getValue $i 1`
   #url中含有大括號(hào)時(shí)需要轉(zhuǎn)義
   url="https://api.yourdomain.com/api/register?params=\{\"name\":\"$name\",\"city_name\":\"$city_name\"}"
   echo $url
   result=$(curl -X GET $url)
   echo $result
   sleep 0.8
done
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容