合并POstgreSQL 9.1 hstore列中的现有列

时间:2013-01-28 07:27:16

标签: postgresql hstore

我有一个PostgreSQL 9.1数据库表(我们称之为MyTable),如下所示:

 gid | name | address | phone | colA | colB | colC | colD
------------------------------------------------------------
     |      |         |       |      |       |      |   

我在这个数据库中启用了hstore:

 CREATE EXTENSION hstore;

现在,我想创建一个hstore列(colH),用于存储列colA colB colC colD,其中包含键的名称和值,以及它们的值。

ALTER TABLE MyTable ADD COLUMN colH hstore;

现在,我如何在hstore列中插入值?我认为INSERT会有所帮助,但我不知道该怎么做。 请帮忙。

1 个答案:

答案 0 :(得分:1)

Insert用于创建新的,而不是更改现有行的列。

添加hstore列后需要使用update

update mytable
   set colh = hstore('cola', cola)||hstore('colb', colb)||hstore('colc', colc)||hstore('cold', cold);

或 - 稍微紧凑:

update mytable
    set colh = hstore(array['cola','colb','colc','cold'], array[cola,colb,colc,cold]);

这假设cola,colb,colc和cold属于text或varchar类型。如果不是,你需要正确地施放它们。

之后,您可以删除不再需要的列。