Перейти к основному содержанию

Вопрос

Как импортировать GeoJSON с массивом вложенных объектов?

Ответ

В этом руководстве мы будем использовать открытые данные, находящиеся в открытом доступе здесь. Копию можно найти здесь.
  1. Загрузите данные в формате GeoJSON и переименуйте файл в geojson.json.
  2. Изучите структуру.
  1. Создайте таблицу для хранения строк GeoJSON.

Здесь нужно создать по одной строке для каждого object в массиве features. Тип данных, автоматически определённый для поля geometry, указывает на то, что в ClickHouse ему соответствует тип данных MultiPolygon.
  1. Подготовьте данные.

Основная цель запроса — убедиться, что мы получаем по одной строке для каждого объекта в массиве features.
Поле features.geometry.coordinates закомментировано, чтобы результирующий набор было легче читать.
  1. Вставьте данные.

В этом случае возникает следующая ошибка:
Это связано с парсингом features.geometry.coordinates.
  1. Давайте проверим его тип данных.

Это можно исправить, приведя multipolygon.properties.coordinates к типу Array(Array(Array(Tuple(Float64,Float64)))). Для этого можно воспользоваться функцией arrayMap(func,arr1,…).
  1. Выполните вставку данных.

Заключение

Работа с JSON может быть непростой задачей. В этом руководстве мы рассмотрели сценарий, в котором вложенный массив объектов дополнительно усложняет эту задачу. По всем другим вопросам, связанным с JSON, обратитесь к нашей документации.
Последнее изменение 3 июля 2026 г.