

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]

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


CC BY-SA 4.0
2019-02-04T03:07:36.957
52523
2019-02-04T03:47:40.623
2019-02-04T03:47:40.623
8593
8593
question
mysql bash jq
bash(シェル)からmysqlのSELECTを行いJSONで出力する方法


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

[code]

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

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

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


CC BY-SA 4.0
2019-02-04T03:35:08.053
52526
2019-02-04T03:45:22.867
2019-02-04T03:45:22.867
754
754
52523
answer