跳转到主要内容

问题

如何导入带有嵌套对象数组的 GeoJSON?

答案

本教程将使用此处公开提供的开放数据。你也可以在此处找到一份副本。
  1. 下载 GeoJSON 格式的数据,并将文件重命名为 geojson.json
  2. 了解其结构。
  1. 创建一个表,用于存储 GeoJSON 行。

这里需要为 features 数组 中的每个 object 生成一行。 为字段 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 相关的需求,请参阅我们的文档
最后修改于 2026年6月25日