2008/07/06

sqlite3 メモ

Firefox3では各種データがSQLiteで管理されるようになりました
今まではテキストデータだったので編集も簡単でしたが
データベースの編集には少し面倒な方法を取らなくてはいけません

まず簡単なものとして拡張機能であるSQLite Managerを使用する方法
しかしこの拡張、結構重いんです

他はFedoraでは標準で入っている"sqlite3"コマンドを使用する方法
今回はこれについて紹介したいと思います

SQLは苦手だったのでこの記事を書くにあたり
SQL入門を参考にさせていただきました

まずデータベースへの接続をします
Firefoxを終了後ターミナルでプロファイルディレクトリに移動し
以下のコマンドを実行してください
(今回は例として"permissions.sqlite"を開きます)
$ sqlite3 -header permissions.sqlite

するとプロンプトが以下の様に変わると思います
これで接続は完了です
終了するには".exit"または".quit"を使用します
sqlite>

次にデータベースに含まれているテーブル名を調べます
"permissions.sqlite"には"moz_hosts"というテーブルが
含まれているということがわかりました
(テーブルが複数ある場合もあります)
sqlite> .tables
moz_hosts
sqlite>


とりあえず、テーブルの中身をすべて表示してみましょう
出力は"select カラム名 from テーブル名;"です
ここでは全てのカラムを表示したいので
"カラム名"の部分は"*"を指定しています
(以下の例は見やすいようにスペースを入れてあります)
sqlite> select * from moz_hosts;
id | host | type | permission
1 | google.com | cookie | 1
2 | google.co.jp | cookie | 1
7 | amazon.co.jp | cookie | 1
10 | www.blogger.com | cookie | 1
13 | twitter.com | cookie | 1
...省略...
sqlite>


1行目はカラム名です

2行目は"id"が"1"、"host"が"google.com"、
"type"が"cookie"、"permission"が"1"です

"type"が"cookie"の場合"permission"に指定できる値は以下の様です
1: 許可
2: 拒否
8: 現在のセッションのみ


テーブルに対してはデータの追加、変更、削除が行えます
まず追加は"insert into テーブル名 values(値1, 値2, ...);"の様に指定します
この場合、値1が"id"、値2が"host"、値3が"type"、値4が"permission"を指します
"id"は他のデータと被らない値を指定しましょう
実際にデータの追加を行うには以下の様にします
意味は「"moz_hosts"テーブルに"idは14"、
"example.com"の"cookie"は"拒否(2)"というデータを追加」です
sqlite> insert into moz_hosts values(14, 'example.com', 'cookie', 2);


上記では"example.com"を指定しました
しかしこれでは"www.example.com"や
"aaa.bbb.example.com"のクッキーも拒否してしまいます
以下では"ad.example.com"のクッキーのみ拒否する様に変更したいと思います

変更は"update テーブル名 set カラム名 = 値 where 条件;"です
本来は"条件"に一致したデータが全て変更されるのですが
ここでは説明を簡単にするため"条件"の部分は直感的な"id = XX"を使用します
意味は「"moz_hosts"テーブルにある"idが14"のデータの"host"を"ad.example.com"に変更」です
sqlite> update moz_hosts set host = 'ad.example.com' where id = 14;


最後に削除です
削除は"delete from テーブル名 where 条件;"です
追加の例で追加したデータを削除してみましょう
意味は「"moz_hosts"テーブルにある"idが14"のデータを削除」です
sqlite> delete from moz_hosts where id = 14;


SQLiteの紹介は以上で終了です
これだけコマンドを覚えておけば一通りのことは出来ると思います
ただ、慣れないコマンドを打つのはしんどいです
SQLite Managerがもっと軽くなるか、シンプルな編集ツールが出るといいですね

0 件のコメント:

コメントを投稿