SQLite のデータをコマンドプロンプトから参照する

概要

AndroidSQLite を使う際に、コマンドプロンプトから SQL 文を実行してデータを確認したい場合があります。 実機に sqlite3 がインストールされていない場合の実行方法について書きます。 但し、実機で base64 コマンドを実行できる場合の方法です。

確認環境

参考情報

解説

AndroidSQLite を使っていれば、コマンドプロンプトから SQL 文を実行してデータを確認したくなるもの。 しかし、実機に sqlite3 コマンドがインストールされていない。 sqlite3 を実機にインストールするには root 権限が必要だが、root 取得はしたくない。 その場合には、データベースファイルを PC にコピーする。

コピーをするために下記のコマンドを実行する。

$ adb shell run-as <アプリのパッケージ名> toybox base64 databases/<データベースファイル名> | base64 -D > <データベースファイル名>
  1. adb shell コマンドで、実機において shell を実行する。実行するコマンドは run-as <アプリのパッケージ名> toybox base64 databases/<データベースファイル名>
  2. run-as コマンドは、アプリのユーザーとしてコマンドを実行する。デバッグモードでのみ機能するらしい。
  3. toybox は様々なコマンドを集約したバイナリ。toybox に含まれる様々なコマンドの一つとして base64 コマンドがある。
  4. base64 コマンドはバイナリデータを文字データに変換する。
  5. run-as から | (パイプ) の前までが実機側で実行され、| (パイプ) 以降は PC 側で実行される。| (パイプ) によりデータを受け渡す。
  6. base64 -D により、文字データを再びバイナリデータに変換する。
  7. > <データベースファイル名> により、ファイルに保存する。

データベースファイルを取得した後は PC で操作する。

$ sqlite3 <データベースファイル名>
sqlite> .table
...

toybox base64 を試す前に cat で試したが、データが一部変わってしまったので文字データに変換する方法を探したところ、 Xperia Z5 には toybox がインストールされていたので問題を解決できた。