參考資料: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這個結果進行了處理,是因為查詢數據庫獲得的結果有標題,需要去掉這個標題