steve wrote: > Derek Smith wrote: >> insert line from mailfile into rows >> done >> >> close file >> close database >> >> >> Am I far off? >> Please advise with tips maybe and or actual code! >> Thank you > > # Load all required gems > require "rubygems" > require "Amalgalite" > > fn="tester.sq3" > FileUtils::rm(fn) if File.exist?(fn) # start with a clean slate > db=Amalgalite::Database.new(fn) > db.execute("create table test ( colone, coltwo, colthree, colfour )") > db.commit > insert_sql="insert into test values (?,?,?,?)" > stmt=db.prepare(insert_sql) > stmt.execute(*%w{one two three four}) > stmt.execute(*%w(five six seven eight)) > db.commit > > Hope this helps > > Steve. It did help, but I am having issues still. #!/usr/bin/env ruby require 'rubygems'; require 'amalgalite'; require 'date'; $VERBOSE=1; mailog = File.read("/home/derek/Desktop/maillog") mailog2 = "/home/derek/Desktop/maillog" runlog = "/usr/local/vrep/logs/mail_log_miner.log" db = Amalgalite::Database.new("/usr/local/vrep/repo/db/development.sqlite3") db.execute("create table maillog ( month datetime DEFAULT NULL NULL, \ day integer DEFAULT NULL NULL, time datetime DEFAULT NULL NULL, host \ varchar(25) DEFAULT NULL NULL, \ daemon varchar(25) DEFAULT NULL NULL, mailmsgs varchar(200) DEFAULT NULL NULL \ )") db.commit File.open(mailog2, 'r+') do |mlog| if mlog.flock(File::LOCK_SH) == 0 #mlog.each do |line| insert_sql = "insert into maillog values '#{mailog}'" stmt=db.prepare(insert_sql) #end ### END DO ### else string = 'LOCK_SH was not obtained on /var/log/maillog!' File.open(runlog, 'a') { |rlog| rlog.puts Date.today.to_s, string } end ### END IF ### mlog.flock(File::LOCK_UN) end ### END DO mailog ### No matter how many lines the file is, I get this error. __ERROR__ ruby mail_log_miner.rb /home/derek/.gem/ruby/1.8/gems/amalgalite-0.10.1/lib/amalgalite/statement.rb:33:in `prepare': Failure to prepare statement insert into maillog values 'Jul 14 21:09:09 test postfix/smtp[39626]: A186A46072: host mx.dca.untd.com[64.136.44.37] refused to talk to me: 550 Access denied...120d20ddd5a4616169c5d0b9f4b9cdb97d6465e929690c7561159010ad410590e405ad2951adad29c0ad40ed75f004c07175d971042d152581... (Amalgalite::SQLi 'Jul 14 21:09:39 test postfix/smtp[39630]: 926B34608F: to=<holveyj / us.panasoni.com>, relay=none, delay=38352, delays=38322/0.02/30/0, dsn=4.4.1, status=deferred (connect to us.panasoni.com[216.8.179.24]:25: Operation timed out) '": syntax error from /home/derek/.gem/ruby/1.8/gems/amalgalite-0.10.1/lib/amalgalite/statement.rb:33:in `send' from /home/derek/.gem/ruby/1.8/gems/amalgalite-0.10.1/lib/amalgalite/statement.rb:33:in `initialize' from /home/derek/.gem/ruby/1.8/gems/amalgalite-0.10.1/lib/amalgalite/database.rb:264:in `new' from /home/derek/.gem/ruby/1.8/gems/amalgalite-0.10.1/lib/amalgalite/database.rb:264:in `prepare' from mail_log_miner.rb:22 from mail_log_miner.rb:18:in `open' from mail_log_miner.rb:18 te3::Error) Also, when I File.read it sucks it into memory all at once and comes out as one line. This is probably not good for large files so will you recommend a better alternative such as .each do.... or is this OK? Each line in the file begins with the Month abbreviated such as "Jul" Thank you -- Posted via http://www.ruby-forum.com/.