我有一个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会有所帮助,但我不知道该怎么做。 请帮忙。
答案 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类型。如果不是,你需要正确地施放它们。
之后,您可以删除不再需要的列。