删除postgres表的json字符串中的特定元素

时间:2017-06-12 12:07:28

标签: json postgresql openstreetmap

我在世界上所有国家/地区都有一个OSM表(在postgres数据库中),其中json文本格式的“tags”列提供了有关给定国家/地区的大量不同信息:

psql/mydb# \d osm_country
       Column       |            Type             
--------------------+-------------------
 id                 | integer            
 name               | text                    
 tags               | text                   

列“标签”具有不同类型的信息,例如“flag”,“note”,“official_name”,“”ISO3166-1:numeric“,......以及非常多的”name:XX“使用XX语言中给定国家/地区的名称。例如,我在“标签”列中的“法国”行:

{ "flag":"http://www.flags/france.jpeg", "note":"blabla", "iso2":"FR",
"name:fr": "France", "name:es": "Francia", "name:en": "France"
"name:af": "Frankryk", "name:ak": "Frɛnkyeman", "name:ast": "Francia",
"name:am": "ፈረንሣይ", "name:an": "Francia", "name:ar": "فرنسا",
"name:ja": "フランス", "name:zh": "法國", "name:zu": "IFulansi",
....
"ISO3166-1:numeric": "250","osm_changeset": "47737436}

这里有大量不同的语言。我想保留一些特定的名称:XX(法语,英语,西班牙语......)以及除“name:XX”(flag,note,iso2,....)之外的所有不同标签。注意:除了名称之外的其他标志:XX从一个国家变为另一个,例如一些具有“flag”标签而另一些则没有。

我已经完成了这个但是使用了游标和临时表的复杂指令集,但我很确定我不知道如何以良好的方式处理json。您知道有没有办法通过一个独特的查询来执行此操作?

谢谢,托马斯

0 个答案:

没有答案