Re: update table from a csv file

From: Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>
To: Kirk Wythers <kirk(dot)wythers(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: update table from a csv file
Date: 2012-12-27 16:55:53
Message-ID: 50DC7D99.40207@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 12/27/2012 08:50 AM, Kirk Wythers wrote:
>
> On Dec 27, 2012, at 10:39 AM, Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com
> <mailto:adrian(dot)klaver(at)gmail(dot)com>> wrote:
>
>> No. Some questions though.
>
> Thanks for the reply Adrian.
>
>>
>> What version pf Postgres?
>
> 9.1
>
>> Is that the actual UPDATE statement, I see no SET?
>
> I was reading the docs but obviously don't understand the syntax of the
> update statement.
>
>> Have you tried it?
>> If so and it failed what was the error?
>
> Yes and I got an error at or near from. Like this:
>
> b4warmed3=# UPDATE sixty_min FROM tmp_60 WHERE sixty_min.rowid =
> tmp_60.rowid;
> ERROR: syntax error at or near "FROM"
> LINE 1: UPDATE sixty_min FROM tmp_60 WHERE sixty_min.rowid = tmp_60....
> ^
> b4warmed3=#

It is not enough to match the rows through "sixty_min.rowid = tmp_60."
You also need to match the columns using SET.
Per the examples at the bottom of:

http://www.postgresql.org/docs/9.2/interactive/sql-update.html

UPDATE employees SET sales_count = sales_count + 1 FROM accounts
WHERE accounts.name = 'Acme Corporation'
AND employees.id = accounts.sales_person;

For many columns it is easier to use the other form of SET. Example from
docs:

UPDATE weather SET (temp_lo, temp_hi, prcp) = (temp_lo+1, temp_lo+15,
DEFAULT)

>

--
Adrian Klaver
adrian(dot)klaver(at)gmail(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Mark Morgan Lloyd 2012-12-27 18:42:44 libpq thread safety
Previous Message Kirk Wythers 2012-12-27 16:50:22 Re: update table from a csv file