Home > コンピュータ > RubyでSQLiteを使う

RubyでSQLiteを使う

大学院のメーリングリストに大量のテキストデータから必要なデータを抜き出して統計処理をするためのプログラム作成依頼があったのでやってみた。依頼を聞くと、一度データを読んでデータベースに放り込んで、必要に応じて取り出してカウントした方がよさそうである。自分だけで使うなら環境は何でもいいのだけど、納品して使ってもらうため、面倒なことはできるだけ避けたい。そういうわけで、Ruby + SQLiteを試してみることにした。SQLiteはデータベースの一種だが、サーバではなくDLLを同梱すればよいので手軽である。

開発環境はMac OS X 10.4なので、RubyとSQLiteはもともと入っている。次にRubyForgeからsqlite3-rubyをダウンロードする。バージョンは1.2.1(February 3, 2007リリース)があったので、それを使うことにする。インストールは解凍してsudo ruby setup.rbすればOK。

さて、コードだが まず

require ‘sqlite3′

する。 次いで

db = SQLite3::Database.new(‘test.db’)

としてデータベースオブジェクト(?)を作成、あとはこれを使ってゴリゴリ書いていく。テーブルの作成は

sql = <<’EOD’
CREATE TABLE participant
(
id INTEGER PRIMARY KEY,
name TEXT,
post TEXT,
affiliation TEXT,
mail TEXT,
sector TEXT,
country TEXT
);
EOD

でいいのかな。 あまりSQLもRubyも使わないのでよくわからないが、Google検索を駆使してサンプルコードを拾ってきて記述。

SQLiteはトランザクションを開始しないとINSERTの度にCOMMITが行われて遅いという。というわけで

db.execute(“BEGIN TRANSACTION;”)

処理

db.execute(“END TRANSACTION;”)

で処理をくくってループの中で

sql = “INSERT INTO participant VALUES ( NULL, ” << sector << “, ” << country << “, ” << name << “, ” << post << “, ” << affiliation << “, ” << mail << “)”

$db.execute_batch(sql)

する。 とりあえず上手くいくようだ。データベースはTerminalで

[user@host ~/Desktop/SQLite]# sqlite3 test.db
SQLite version 3.1.3
Enter “.help” for instructions
sqlite>

となるので、

sqlite> select * from participant;

と適当なSQLを送ってやるとずらずらとデータが出てくる。8000件程度の比較的小さなデータだが、問題なく動いている。ずぶの素人がそうだSQLを使おうと思い立って1日でここまでできるのだから、覚えやすい環境といえるだろう。

最後にSQLite Database Browserというものを見つけた。GUIでデータベースを見られるというもので、これも手探りでSQLをいじっている身には可視化されるので重宝する。

Comments:0

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.neoneet.jp/2007/10/16/ruby%e3%81%a7sqlite%e3%82%92%e4%bd%bf%e3%81%86/trackback/
Listed below are links to weblogs that reference
RubyでSQLiteを使う from 週刊(月刊?)プレカリアート

Home > コンピュータ > RubyでSQLiteを使う

Search
Feeds
Meta

Page Top