You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGIS导出换行分隔GeoJSON与BigQuery兼容问题及排查需求

排查与解决BigQuery加载换行分隔GeoJSON的嵌套数组错误

一、先验证GeoJSON文件格式(WebUI操作)

  • 打开GCS控制台,找到目标GeoJSON文件,点击预览逐行检查结构
    • 换行分隔GeoJSON要求每行是独立的GeoJSON Feature对象,不能是[{}, {}, {}]这种顶层数组结构,必须每行一个{...}
    • 重点看每个Feature的properties字段,QGIS导出时可能把多值属性导出成数组(比如"tags": ["a", "b"]),而BigQuery默认不允许直接加载这种嵌套数组作为普通字段

二、用SQL临时加载定位错误(BigQuery WebUI编辑器)

  • 创建临时表允许加载错误数据,方便排查具体问题:
    CREATE OR REPLACE TEMP TABLE temp_geo_data
    OPTIONS(
      allow_jagged_rows = TRUE,
      allow_quoted_newlines = TRUE
    ) AS
    SELECT * FROM `gs://[你的存储桶路径]/[目标文件名].geojson`;
    
  • 执行后去作业历史找到该任务的ID,然后查询错误详情:
    SELECT * FROM `region-[你的区域ID].INFORMATION_SCHEMA.JOB_ERRORS`
    WHERE job_id = '[刚才的加载任务ID]';
    
    这样能精准定位到哪一行、哪个字段触发了嵌套数组错误

三、两种解决方法(WebUI/SQL实现)

方法1:手动指定Schema适配嵌套数组

  • 回到BigQuery UI的表创建页面,手动设置字段Schema:
    • 对出现嵌套数组的字段,把类型设为对应的数组类型,比如字符串数组就设为ARRAY<STRING>
    • 发起加载时勾选允许残缺行,避免其他小格式问题导致失败

方法2:用SQL清洗数据后再加载

  • 如果不想修改Schema,或者需要统一处理数组字段,可以用SQL把数组转成字符串:
    CREATE OR REPLACE TABLE final_geo_table
    AS
    SELECT
      ST_GEOGFROMGEOJSON(json_column) AS geometry,
      -- 把数组转成逗号分隔的字符串
      ARRAY_TO_STRING(JSON_EXTRACT_ARRAY(json_column, '$.properties.tags'), ',') AS tags,
      -- 提取其他普通属性
      JSON_EXTRACT_SCALAR(json_column, '$.properties.name') AS name,
      JSON_EXTRACT_SCALAR(json_column, '$.properties.id') AS id
    FROM `gs://[你的存储桶路径]/[目标文件名].geojson`;
    

四、QGIS导出时提前规避问题

  • 导出GeoJSON时,在QGIS的导出设置里:
    • 务必选择换行分隔的GeoJSON(别选标准GeoJSON,标准格式是顶层数组,BigQuery不认)
    • 对多值属性,提前合并成单字符串(比如用逗号分隔),避免导出成数组

内容的提问来源于stack exchange,提问作者Moseleyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:52:18