Экспорт большого набора данных (JSON) из PostgreSQL - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть база данных postgres с геопространственными данными, и я хочу экспортировать некоторые их части в виде GeoJSON.

Поэтому у меня есть SQL-команда, подобная следующей:

SELECT jsonb_build_object ( 'some_test_data', jsonb_agg (ST_AsGeoJSON (ST_Transform (way, 4326))::jsonb)) as json
FROM (
  SELECT way, name, highway
  FROM planet_osm_line
  LIMIT 10) result

и это в основном работает нормально.Я также могу сохранить его в файл и вывести его непосредственно в файл следующим образом:

psql -qtAX -d my-database -f my_cool_sql_command.sql > result.json

Так что мои данные верны и пригодны для использования, но теперь я хотел бы удалить LIMIT 10, и я получаюERROR: total size of jsonb array elements exceeds the maximum of 268435455 bytes

Я читал, что нелегко удалить этот предел в 256 МБ postgres ... Но я думаю, что есть другие способы получить мой результат?

1 Ответ

0 голосов
/ 13 сентября 2018

Попробуйте сузить файл, упрощая геометрию с помощью st_simplify () и json_build_object () (должно быть ограничение в 1 ГБ [такое же, как ограничение для текста], а не 256 МБ, как для двоичных файлов)

SELECT json_build_object('some_test_data', json_agg (ST_AsGeoJSON (ST_Transform (way, 4326))::json)) as json
  FROM (SELECT st_simplify(way,1) way, name, highway
          FROM planet_osm_line) result

Вы можете упростить более чем на 1 метр, но с 1 метром вы обычно не теряете важные вершины на графике.

...