bash(シェル)からmysqlのSELECTを行いJSONで出力する方法


bashでmysqlのSELECTを行いJSONで出力する方法を知りたいと思っています。

具体的には、

[code]

    echo "SELECT * from testtable;" | mysql --defaults-extra-file=./my.conf testdb
    
[/code]

の結果をJSONで出力して、jqコマンドで値を取り扱いたいと考えています。

mysqlのバージョンは、

[code]

    $ mysql --version
    mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper
    
[/code]

ご存知の方、ご教示お願いします。




`pip install csvkit` を実行して、 csvjson コマンドをインストールします。その後に、

[code]

    mysql -B -e "select * from some_table" some_db | csvjson -d $'\t'
    
[/code]

を実行すると、やりたいことが実現できると思います。

一つだけうまくいかない場合があり、テーブルの中にタブ文字が含まれる場合は、もう少し考える必要があります。

