【发布时间】:2012-11-16 15:46:25
【问题描述】:
我有一个 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 字段是否存在某种限制,即单个 hstore 中有多少键值对? The documentation 什么也没说。
【问题讨论】:
-
您的标题提出的问题与您的问题主体不同,我在理解您的问题后澄清了这一点。并且一如既往添加PostgreSQL版本。
标签: sql postgresql aggregate-functions hstore