Delicious Bookmark アドオンのsqliteファイル

を導入するとプロファイルフォルダにybookmarks.sqliteが作成される。このsqliteファイルに全ブックマークが保存されている。
このファイルから直に照会してURLを引っ張ってこようとしたときのメモ。

schema

  • bookmarks
    • 主要なブックマークデータ
      • name
      • url
      • description
  • tags
    • タグ名リスト
      • name
  • bookmarks_tags
    • ブックマークとタグの関係を紐付けるテーブル
      • bookmark_id
      • tag_id

タグからURLをリストする

主にタグ検索からURLをリストすることが多いのでそれの照会方法。
まず、bookmarks,tagsテーブルには明示的なIDが存在しない。しかし、bookmarks_idにはidで紐付けていると思われる番号のみのリストがある。
http://www.sqlite.org/lang_createtable.html#rowid を見てみるとROWIDなる特殊なカラム(?)があるっぽい。bookmarks_tagsはROWID値でbookmarkstagsを紐付けていると思われる。まぁともかく、この3つのテーブルを使って照会できそうだ。

照会にはTags: Database schemasに載っている、Toxi solutionが使えそうだ。というかそのまま使える。

"javascript","tips"のand条件で検索する場合

select
  b.url,b.name
from
  bookmarks b, bookmarks_tags bt, tags t
where
  bt.tag_id = t.rowid and
  (t.name in ('javascript','tips')) and
  b.rowid = bt.bookmark_id
group by
  b.rowid
having
  count (b.rowid) = 2;

ってな感じ。