генерировать JSON в PostgreSQL
У меня есть postgreSQL 8.4+PostGIS 1.5.
Я хочу создать GeoJson. Я делаю:
SELECT row_to_json(fc)
FROM ( SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
FROM (SELECT 'Feature' As type
, ST_AsGeoJSON(lg.the_geom)::json As geometry
, row_to_json(lp) As properties
FROM parcels_temp As lg
INNER JOIN (SELECT num, cadastr FROM parcels_temp) As lp
ON lg.num = lp.num ) As f ) As fc;
Но получаем ошибку:
ERROR: type "json" does not exist
LINE 4: , ST_AsGeoJSON(lg.the_geom)::json As geometry
Что я делаю не так?
1 ответ:
В PostgreSQL 8.4 нет типа данных
json
. Тип был введен в 9.2, хотя был создан обратный порт в 9.1; см. этот bitbucket.Используйте
text
.json
является просто проверяющей оболочкой вокруг типаtext
в любом случае, интересным битом являются функции типаrow_to_json
- которые также недоступны для 8.4.Если вы не можете использовать
text
- скажем, потому что вы используете сторонний код, который ожидаетjson
, или потому что вам нужны функции json-тогда пришло время обновление PostgreSQL. 8.4 в любом случае становится довольно пожилым, Как и PostGIS 1.5.