From: Robert Klemme Date: 2006-10-31T06:10:16+09:00 Subject: Re: Active Record speed Andrew Libby wrote: > > Hello, > > I'm writing some code that loads data into a database on a routine basis > (dump from legacy system daily). I've got a decent amount of data, and > am loading it now using ActiveRecord. > > I'm finding that it's taking quite a while longer to process than I had > hoped. To see if it's my ruby, or ActiveRecord that is the cause I'd > like to write an implementation that loads the data using the underlying > ActiveRecord connection rather than ActiveRecord objects. > > I come from a Perl DBI and JDBC world, and would like to use prepared > statements. So I've gotten the underlying Mysql > connection (using ActiveRecord::Base.connection.raw_connection). > > When I have code like > > stmt = conn.prepare(%Q/ > INSERT INTO sometable (t1,t2,t3,t4) > VALUES (?,?,?,?) > /) > > bind_params = [1,2,3,4] > > stmt.execute(bind_params) You probably just need to change the line above to stmt.execute(*bind_params) > I get an error on the execute statement. It claims I need to send it 4 > parameters. I'd like to send it an array containing the paramaters > because I build the prepared statement based on the format of my data > file. The bind_params is then an array which is the result of a split > on a line in a data file. > > So what's the best way to handle this? Should I begin to use Ruby's DBI > rather than just steeling the underlying ActiveRecord connections? Kind regards robert