2016-08-28 10 views
0

を処理するために、私はMySQLのテーブルを持っている:水の消費量データを保持するテーブルであるバッシュ - MySQLのテーブルから抽出するデータ(GROUP BY) - 方法

+----+---------------------+-------+ 
| id | timestamp   | value | 
+----+---------------------+-------+ 
| 1 | 2016-03-29 18:53:28 |  1 | 
| 2 | 2016-03-29 20:26:06 |  1 | 
| 3 | 2016-03-29 20:26:22 |  1 | 
+----+---------------------+-------+ 
3 rows in set (0.00 sec) 

valueの各1が水1リットルであります)。

私は数ヶ月の水のリットルのデータを抽出するためのbashスクリプトを書いています。

watersum=`echo " SELECT MONTHNAME(timestamp), SUM(value) FROM woda GROUP BY YEAR(timestamp), MONTH(timestamp);" | mysql -s -u$SQUSER -p$SQPASS -h$SQHOST $SQLDB` 

echo $watersum 

は私を与える:

March 693 April 9768 May 11277 June 11987 July 10047 August 8570 

私はJSONファイルでこのデータを保存したいと思います。 $watersumの文字列をjson文字列に変換するにはどうすればよいですか?

+0

[編集ヘルプ]をご覧ください(http://stackoverflow.com/editing-help)。 – Cyrus

+0

参照:[outテーブル形式のsqlクエリ結果を取得](http://stackoverflow.com/a/16711844/3776858) – Cyrus

+0

私は今ではテーブル名なしで結果を返しましたが、この変数を分割する方法は "March 693 April 9768 5月11277年6月11987 7月10047 8月8570 "月と値を持つjson形式のファイルに? – kovir

答えて

1

は、アレイ

watersum=($(echo " SELECT MONTHNAME(timestamp), SUM(value) FROM woda GROUP BY YEAR(timestamp), MONTH(timestamp);" | mysql -s -u$SQUSER -p$SQPASS -h$SQHOST $SQLDB)) 

echo "{" && for((i=0;i<"${#watersum[@]}";i+=2)) 
do 
echo -n "\"${watersum[$i]}\":\"${watersum[((i+1))]}\""; 
(((i+2) == "${#watersum[@]}")) || echo "," 
done && echo;echo "}" 

出力watersumを作る

{ 
"March":"693", 
"April":"9768", 
"May":"11277", 
"June":"11987", 
"July":"10047", 
"August":"8570" 
} 
+0

チャームのように動作します:)ありがとう。 – kovir

関連する問題