Unix Technical Forum

Problems with bulk update

This is a discussion on Problems with bulk update within the pgsql Sql forums, part of the PostgreSQL category; --> Hi I want to update the values of one column of a table based on the matches in a ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Sql

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-19-2008, 05:55 PM
Venelin Arnaudov
 
Posts: n/a
Default Problems with bulk update

Hi

I want to update the values of one column of a table based on the
matches in a second table

data_table:
field1,
field2_new,
...
field2_old

mapping_table:
new_id,
old_id

something like
update table1
set table1.field2_new=table2.new_id
from table2
where table1.field2_old=table2.old_id;

Is this possible with postgre without writing php script that cycles the
data_table?

I have even created a function
CREATE FUNCTION get_new_field2(integer) RETURNS integer AS
'SELECT new_id FROM mapping WHERE old_id= $1 limit 1'
LANGUAGE SQL;

and tried
UPDATE table1 set field2_new=get_new_field2(field2_old);
but it did not work It seems that the function is not executed for
each record of the data_table.


Kindest regards,
Venelin Arnaudov



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-19-2008, 05:55 PM
Richard Huxton
 
Posts: n/a
Default Re: Problems with bulk update

Venelin Arnaudov wrote:
> Hi
>
> I want to update the values of one column of a table based on the
> matches in a second table


> something like
> update table1
> set table1.field2_new=table2.new_id
> from table2
> where table1.field2_old=table2.old_id;


Did you try it?

http://www.postgresql.org/docs/8.2/s...ql-update.html

PG has a non-standard "FROM" extension for just this purpose.

--
Richard Huxton
Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-19-2008, 05:55 PM
Venelin Arnaudov
 
Posts: n/a
Default Re: Problems with bulk update

I have tried this
gforge=> UPDATE data_table
gforge-> SET field2_new=(SELECT new_id FROM mapping_table WHERE
old_id= data_table.field2_old);

and

gforge-> update data_table set field2_new_=mt.new_id FROM data_table dt,
mapping_table mt WHERE dt.field2_old=mt.old_id;

but initially I got error. "ERROR: column data_table.old_brand_id does
not exist"


It took me an eternity to realize that it is because of a missing entry
in the mapping table. I have added the record and the update run correctly.

Thank you very much

Kindest regards,
Venelin Arnaudov




Richard Huxton wrote:
> Venelin Arnaudov wrote:
>> Hi
>>
>> I want to update the values of one column of a table based on the
>> matches in a second table

>
>> something like
>> update table1
>> set table1.field2_new=table2.new_id
>> from table2
>> where table1.field2_old=table2.old_id;

>
> Did you try it?
>
> http://www.postgresql.org/docs/8.2/s...ql-update.html
>
> PG has a non-standard "FROM" extension for just this purpose.
>


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 09:01 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com