ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【SQLite3】コマンドから直接 .mode json の出力を得たい場合について

sqlite3 コマンドラインツールから直接 [.mode json] の出力を取得する方法をここにメモします。

方法 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 複数回実行する場合に便利