shell腳本循環執行mysql語句


參考資料:Shell腳本中執行mysql語句

需求:數據庫里有張數據表存儲的是用戶對電影的評價(user_id movie_id rating time),但是我現在要每部電影的總評分。

解決方法

1)、寫個sql文件test.sql:use movie_recommendation;select distinct movie_id from T_user_movie_rating_map;

2)、在終端輸入mysql -uroot -p123456 -e < test.sql > movie_id.txt

  這樣就會獲得電影id的列表,然后編輯該文件把第一行的movie_id這個字符串刪掉

3)、然后編輯如下shell腳本rating.sh:

 1 #!/bin/bash
 2 
 3 for line in $(cat movie_id.txt)
 4 do
 5     result=$(mysql -uroot -p123456 -e "use movie_recommendation;select avg(rating) from T_user_movie_rating_map where movie_id=$line")
 6     tmp=$(echo $result | sed 's/ /\n/g')
 7     for tmp_line in $tmp
 8     do
 9         result=$tmp_line
10     done
11     echo $line:$result
12     echo $line,$result >> rating.txt
13 done

4)、在終端輸入. ./rating.sh即可將電影id和電影對應的評分寫入到指定文件夾下

說明:中間對result這個結果進行了處理,是因為查詢數據庫獲得的結果有標題,需要去掉這個標題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM