#!/usr/bin/ruby require 'rubygems' require 'sqlite3' require 'parsevolc' class Loader @@COUNT = 1000 def initialize file @db = SQLite3::Database.new('wmo9.sqlite') @file = file end def update row sql = <<-ENDSQL UPDATE volc1 SET category = :category WHERE ttaaii = :ttaaii AND cccc = :cccc AND category IS NULL ENDSQL @db.execute(sql, :ttaaii => row['ttaaii'], :cccc => row['cccc'], :category => row['category'] || 'A') end def putdb @db.transaction count = 0 ParseVolc1.read(@file) { |row| update row count = count.succ if count > 1000 @db.commit $stderr.write("#") and $stderr.flush if $VERBOSE @db.transaction count = 0 end } $stderr.write("\n") if $VERBOSE @db.commit end def run putdb @db.close end end for file in ARGV Loader.new(file).run end