[R] Fast update of a lot of records in a database?

Duncan Murdoch murdoch at stats.uwo.ca
Fri May 19 19:15:18 CEST 2006


On 5/19/2006 11:17 AM, Duncan Murdoch wrote:
> We have a PostgreSQL table with about 400000 records in it.  Using 
> either RODBC or RdbiPgSQL, what is the fastest way to update one (or a 
> few) column(s) in a large collection of records?  Currently we're 
> sending sql like
> 
> BEGIN
> UPDATE table SET col1=value WHERE id=id
> (repeated thousands of times for different ids)
> COMMIT
> 
> and this takes hours to complete.  Surely there must be a quicker way?

Thanks to Robert McGehee and Bogdan Romocea for their responses.

Putting them together, I think the following will do what I want:

put the updates into a temporary table called updates

UPDATE bigtable AS a
   FROM updates AS b
   WHERE a.id = b.id
   SET a.col1 = b.col1

The FROM clause is a PostgreSQL extension.  This is not portable, but 
MySQL does it with different syntax:

UPDATE bigtable AS a, updates AS b
   WHERE a.id = b.id
   SET a.col1 = b.col1

I don't think SQLite supports updating one table from another.

Duncan Murdoch




More information about the R-help mailing list