SQLite を使ってデータベースの中身を覗いてみる

POPFile 0.21.0 より、SQLite というデータベースシステムが使われている。コマンドラインツールの sqlite を使えばデータベースの内容を参照したり、編集したりすることができるのだ。どんなことができるのか、少し試してみる。
Windows 版では、POPFile フォルダに sqlite.exe というファイルがインストールされているのでこれを使えばいいのだけど、Mac OS Xマルチプラットフォーム版を使っているときには別にインストールする必要がある。SQLite: An Embeddable SQL Database Engine からソースコードをダウンロードする。これを書いている時点では、2.8.13 というバージョンが最新のようなので、sqlite-2.8.13.tar.gz をダウンロードした。
ダウンロードしたら、適当なフォルダに展開して、いつものように、./configure、make、sudo make install でインストールする。インストール先は、デフォルトでは /usr/local/bin/sqlite のようだ。
使い方は、

sqlite <データベース名>

とするだけ。POPFile のデータベース(popfile.db)をバックアップしておき、これを開いてみる。すると、

sqlite>

という sqlite のコンソールがあらわれる。ここでは、select などの普通の SQL 文が使えるほか、.help で呼び出すことができる、いくつかの「.」で始まるコマンドを使うことができる。
試しに、

select * from magnet_types;

としてみると、マグネットの種類が定義されたテーブル(magnet_types)の内容を見ることができる(最後にセミコロン「;」をつけるのを忘れないように。忘れてしまったときは、次の行につければよい。sqlite のコンソールでは、「;」が命令の終わりを意味する)。結果は、例えば、

1|from|From
2|to|To
3|subject|Subject
4|cc|Cc

と表示される。これを編集すれば、From や Subject 以外のヘッダを使ったマグネットを作ることができそうな気がするが、それはまたそのうち。
sqlite のコンソールから抜けるには、

.q

とする。
sqlite は、標準入力からのコマンドを受け付け、その結果を標準出力に出力することもできるので、例えば、

echo '.dump' | sqlite popfile.db >popfile.txt

とすれば、popfile.db の内容をテキストベースで出力することができる。このテキストの内容は、データベースの定義をあらわしているとともに、ファイルに書かれた SQL 文を実行すれば、データベースの内容を復元することができるようになっているのだ。これはなかなかおもしろい。ブラックボックスのように感じるコーパスの中身をテキストで見てみるというのもいいかもしれないし、(ちょっと大変だと思うけど)無駄な単語を減らしてみたり、なんてこともできそうだ。
ほかにどんなことができるか……については、sqlite: SQLite データベースと会話するプログラム が非常に参考になる。上記のテキスト出力の話も、実はこのサイトの受け売りである(汗)