人気ブログランキング | 話題のタグを見る

sqlite3 の使い方

SQLite3 のチュートリアルを読んでも、もう一つ使い方が分かった気がしなかった。そこで、コマンドラインのデータベースアクセスプログラム sqlite3 を使って小さなデータベースを作ってみることにした。

材料にしたのは例によって、Wikipediaからコピペしてきたアミノ酸のデータベースだ。タブ区切りになっていたのを vi を利用して、コンマ区切りの次のようなファイルにした。

ファイル名: aminoacid.txt

Alanine,Ala,A,nonpolar,neutral,1.8
Arginine,Arg,R,polar,basic(strongly),-4.5
Asparagine,Asn,N,polar,neutral,-3.5
Asparticacid,Asp,D,polar,acidic,-3.5
Cysteine,Cys,C,nonpolar,neutral,2.5
Glutamicacid,Glu,E,polar,acidic,-3.5
Glutamine,Gln,Q,polar,neutral,-3.5
Glycine,Gly,G,nonpolar,neutral,-0.4
Histidine,His,H,polar,basic(weakly),-3.2
Isoleucine,Ile,I,nonpolar,neutral,4.5
Leucine,Leu,L,nonpolar,neutral,3.8
Lysine,Lys,K,polar,basic,-3.9
Methionine,Met,M,nonpolar,neutral,1.9
Phenylalanine,Phe,F,nonpolar,neutral,2.8
Proline,Pro,P,nonpolar,neutral,-1.6
Serine,Ser,S,polar,neutral,-0.8
Threonine,Thr,T,polar,neutral,-0.7
Tryptophan,Trp,W,nonpolar,neutral,-0.9
Tyrosine,Tyr,Y,polar,neutral,-1.3
Valine,Val,V,nonpolar,neutral,4.2

それから、aminoacid.db というデータベースに aa というテーブルを作るスキーマ aa.sql を次のように作った。

ファイル名: aa.sql

create table aa(
  name varchar(14),
  let3 varchar(3),
  let1 varchar(1),
  polarity varchar(8),
  acidity varchar(16),
  hydropathy real
);

これで準備ができたので、sqlite3 をつかって、aminoacid.db と言うデータベースを作り、その中に aa というテーブルを作った。

$ sqlite3 aminoacid.db < aa.sql

それから、aminoacid.txt のデータをテーブル aa にインポートした。

$ sqlite3 -separator , aminoacid.db ".import aminoacid.txt aa"

そうして、sqlite3 で、aminoacid.db に接続し、次のような操作でテーブルがちゃんとできているか確認した。(結果の表示は省略。)

$ sqlite3 aminoacid.db
SQLite version 3.4.2
Enter ".help" for instructions
sqlite> .tables
sqlite> select * from aa;

スキーマを確認。
sqlite> .schema

カラムの幅を指定。(0にすると自動的に設定してくれる。)
sqlite> .width 0 0 0 0 0 0

表示をわかりやすくする。
sqlite>.explain

もう一度、テーブルを表示
sqlite> select * from aa;

カラムの幅を調整
sqlite> .width 14 3 3 8 16 10

もう一度表示
sqlite> select * from aa;

並べ替え
sqlite> select * from aa order by let1;

検索
sqlite> select * from aa where hydropathy > 3;

やはり、データベースはデータを入力して動かして見ないと使い方が分からない。sqlite3 はサーバーを動かさなくても、コマンドラインから簡単に扱えるので、個人用の小さなデータをデータベースで処理してみるのには手軽で便利だ。

sqlite3-ruby を使うと、検索の出力を Ruby の配列にできるようなので、それをさらに加工することもできる。便利になったものだ。
by tnomura9 | 2008-10-09 00:01 | Ruby | Comments(0)
<< 郵便番号データベース snippet picker >>