質問: bashでmysqlのSELECTを行いJSONで出力する方法を知りたいと思っています。 具体的には、 ``` echo "SELECT * from testtable;" | mysql --defaults-extra-file=./my.conf testdb ``` の結果をJSONで出力して、jqコマンドで値を取り扱いたいと考えています。 mysqlのバージョンは、 ``` $ mysql --version mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper ``` ご存知の方、ご教示お願いします。
回答: `pip install csvkit` を実行して、 csvjson コマンドをインストールします。その後に、 ``` mysql -B -e "select * from some_table" some_db | csvjson -d $'\t' ``` を実行すると、やりたいことが実現できると思います。 一つだけうまくいかない場合があり、テーブルの中にタブ文字が含まれる場合は、もう少し考える必要があります。