2020年11月4日水曜日

SQLite 3 JSON形式でデータを出力する

概要

SQLite3 のコマンドラインツールで select文で取得したデータをJSON形式で出力する。 カラムの型によって出力をダブルクォートで囲んでくれる。 残念ながらJSONファイルをインポートすることはできない。

JSON形式の出力はSQLite のバージョン3.33.0 から利用可能。

JSONのフォーマットについて

JSONの仕様はECMA-404もしくはRFC8259で確認できる。 適当に書いてもアプリが適切に解釈してくれることがあるので 気にしなくてもいいかも知れないが、目を通しておくといい。

環境
  • Windows 10 64bit
  • SQLite3 (3.33.0) Command-Line Shell

実行例

出力モードを変更する「.mode」コマンドを利用する。
ファイルに出力する場合は 「 .once 」コマンドを利用する。

1レコードが カラム名をキーワードとした連想配列となり、 その連想配列を要素とする行列として出力される。

サンプルテーブル(product)
id
primary key
autoincrement
name
not null
quantity
default 0
remark
1 tomato 100
2 potato 120
3 pumpkin 50 (Comment...)
コンソール上に出力する

sqlite> -- # 1.
sqlite> .mode json
sqlite> -- # 2.
sqlite> select * from product;
[{"id":1,"name":"tomato","quantity":100,"remark":""},
{"id":2,"name":"potato","quantity":120,"remark":""},
{"id":3,"name":"pumpkin","quantity":50,"remark":"(Comment...)"}]
                    
  1. JSONモードに切り替え
  2. select文で取得した内容がJSON形式で表示される
ファイルに出力する

sqlite> -- # 1.
sqlite> .mode json
sqlite> -- # 2.
sqlite> .once output.json
sqlite> -- # 3.
sqlite> select * from product;
                    
  1. JSONモードに切り替え
  2. 次のコマンドの結果をoutput.jsonとして出力
  3. select文で取得した内容がJSON形式でファイルに出力される

参考URL