sqlite3 コマンドラインツールから直接 [.mode json] の出力を取得する方法をここにメモします。
- 方法 1: sqlite3 コマンドに直接渡す
- 方法 2: echo コマンドで .mode json を実行
- 方法 3: sqlite3 の対話モードで実行
- 方法 4: スクリプトファイルを作成
- まとめ
方法 1: sqlite3 コマンドに直接渡す
以下のように sqlite3 のオプションを使うことで、JSON出力を得られます。
コマンド
sqlite3 -json my_database.db "SELECT * FROM users;"
ポイント
- -json オプションを使うと .mode json を指定したのと同じになる
- SQLite 3.38.0 以上が必要
方法 2: echo コマンドで .mode json を実行
以下のように echo コマンドで .mode json を渡すことで JSON 出力を得ることができます。
echo -e ".mode json\nSELECT * FROM users;" | sqlite3 my_database.db
ポイント
- [.mode json] を明示的に設定
- [echo -e] もしくは printf で複数のコマンドを渡す
方法 3: sqlite3 の対話モードで実行
コマンド
sqlite3 my_database.db sqlite> .mode json sqlite> SELECT * FROM users;
ポイント
対話モードでは [.mode json] を先に設定すれば、その後のクエリの出力が JSON 形式になる
方法 4: スクリプトファイルを作成
事前に .sql ファイルを作成して、それを sqlite3 で実行する方法もあります。
ファイル生成(query.sql)
.mode json SELECT * FROM users;
スクリプトを sqlite3 で実行
sqlite3 my_database.db < query.sql
まとめ
| 方法 | コマンド例 | メリット |
| オプションを使う | sqlite3 -json my_database.db "SELECT * FROM users;" | 簡潔で単発のクエリに最適 |
| echo や printf を使う | `echo -e ".mode json\nSELECT * FROM users;" | sqlite3 my_database.db` |
| 対話モードで実行 | .mode json を先に入力し、その後 SELECT を実行 | インタラクティブに試せる |
| スクリプトを使う | sqlite3 my_database.db < query.sql | 複数回実行する場合に便利 |