SQLite対応アプリのデータベースファイルをCSV化する(1)

海上忍
2010-02-19 18:52:04
  • このエントリーをはてなブックマークに追加

 前回、SQLiteを利用するアプリケーションに蓄積されたデータを閲覧する方法を紹介した。今回はその続編として、データを表計算ソフトで再利用できるよう出力する方法について説明する。ここではアドレスブックのデータ(~/Library/Application Support/AddressBook/AddressBook-v22.abcddb)を使用するが、Mail.appなど他のSQLite依存アプリに置き換えてもかまわない。

 ほぼすべての表計算ソフトが対応している「カンマ区切りのテキストファイル」(CSVファイル)を例に、説明してみよう。まずは、カレントディレクトリをアドレスブックの作業領域へ移し、そこでsqlite3コマンドを使い、データベースファイル(AddressBook-v22.abcddb)を開く。プロンプトが「sqlite>」に変化し、対話モードが開始されるはずだ。

$ cd Library/Application\ Support/AddressBook/
$ sqlite3 AddressBook-v22.abcddb
  SQLite version 3.6.12
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
sqlite>

 次に、CSVファイルとして出力するテーブル(データの集合)を特定しよう。テーブルのリストを表示するには、sqlite3の内部コマンド「.tables」を利用する。

sqlite> .tables
ZABCDCALENDARURI                ZABCDPOSTALADDRESS            
ZABCDCONTACTDATE                ZABCDRECORD                   
ZABCDCONTACTINDEX               ZABCDRELATEDNAME              
   ・
   ・
   ・

 これだけではデータの内容はわからないが、先を急ぐため答えを教えてしまうと、「ZABCDCONTACTINDEX」というテーブルには氏名情報が記録されている。試しにこれを「name.csv」というファイル名で出力してみよう。

sqlite> .mode csv ZABCDCONTACTINDEX
sqlite> .output name.csv
sqlite> select * from ZABCDCONTACTINDEX;
sqlite> .exit

 これで、カレントディレクトリに「name.csv」が出力されるはず。UTF-8でエンコードされているため、Excel 2007で直接開くことはできないが、OpenOffice.orgの「Calc」で開いてみよう。住所氏名や電話番号など、アドレスブックに登録したユーザの主要情報が出力されていることが確認できるはずだ。内部コマンドの働きや用法については、また次回。

  • 新着記事
  • 特集
  • ブログ