1

我有一个 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 会有所帮助,但我不知道该怎么做。请帮忙。

4

1 回答 1

1

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

update添加 hstore 列后需要使用:

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 是 typetext或 varchar。如果不是,您需要正确地投射它们。

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

于 2013-01-28T07:32:34.407 回答