单个hstore值中键值对的最大数量是多少?

时间:2012-11-16 15:46:25

标签: sql postgresql aggregate-functions hstore

我有一个postgres表(mapfeatures_20120813),有2列(标签和pky),大约有1000行。每行包含hstore和主键:

   tags (hstore)          pky
"aerialway"=>"cable_car";  1
"aerialway"=>"chair_lift"; 2
"aerialway"=>"drag_lift";  3
"aerialway"=>"gondola";    4
"aerialway"=>"goods";      5
"aerialway"=>"mixed_lift"; 6
"aerialway"=>"pylon";      7
"aerialway"=>"station";    8
"aeroway"=>"aerodrome";    9
"aeroway"=>"apron";        10
...

对于某些分析,我需要将所有这些单个hstore键值对推送到一个单独的hstore -row中,我不知道如何解决这个问题。
因此,我首先将所有行转换为单行文本字段:

CREATE TABLE mf_text AS
SELECT array_to_string(array_agg(tags), ',')
FROM mapfeatures_20120813;

在第二步中,我从此文本字段中创建hstore

SELECT hstore(array_to_string)
FROM mf_text

但问题是超过1000个键值对中只有97个被写入新的hstore-field。此外,我在结果中看不到任何模式,它完全混淆了:

"atv"=>"no", "hgv"=>"forestry", "lit"=>"no", "psv"=>"private"
, "area"=>"yes", "boat"=>"permissive"  

hstore字段是否存在某种限制?有多少键值对适合单个hstoreThe documentation没有说什么。

1 个答案:

答案 0 :(得分:2)

聚合单个hstore值应该简单如下:

SELECT string_agg(tags::text,',')::hstore
FROM   mapfeatures_20120813;

关于标题中的问题:元素数量几乎没有限制。

您的评论:

  

此外,我在结果中看不到任何模式,它完全混淆了:

The manual有这样的说法:

  

对的顺序并不重要(可能无法再现   在输出上。)