- 2008-05-05 (Mon) 4:25
- Programming | Ruby
1. SQLiteで遊んでいる。
コマンドラインからでも気軽に試せるし、rubyで少しスクリプトを書いてもよい。
2万件近くレコードがあるのに、一瞬にして結果を表示してくれるのがおもしろくて仕方がない。
図書カードが確か2,500円分あったので、今日はSQLの本を一冊購入してこようと思う。
csvファイルから読み込むには、コマンドラインから
sqlite3 -separator , test.db ".import test.csv test"
なんて書いてもよいのだけれども、自分のつたない知識では主キーを設定できなかったので、rubyで一項目ずつ加えていくことにした。
ただし、そのまま一項目ずつ加えると劇的に遅いので、トランザクションを使う。
db.transaction begin db.execute "insert test (hoge, piyo) values(?, ?)", hoge, piyo db.commit rescue db.rollback end
こんな風に使うらしい。
トランザクションを明示的にしない場合には、裏で一項目追加されるごとにトランザクションをおこない(この書き方があっているかどうかは知らない)、commitされるそうだ。
それで、遅くなる理由が納得できた。
事実、トランザクションを使うと何倍も早く追加ができた。
- Newer: 日々雑感: 2008/05/07
- Older: 薬価基準収載コード(厚生労働省コード)を使って同一成分規格の薬を検索する
