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

DuckDB调用ST_GeometryType(BLOB)报错,请求解决类型转换问题

解决DuckDB中ST_GeometryType调用报错(BLOB类型参数问题)

问题根源

报错提示ST_GeometryType(BLOB)不匹配,是因为你的Parquet文件中geometry字段以二进制WKB格式存储,DuckDB默认将其识别为BLOB类型,而ST_GeometryType仅接受GEOMETRY或具体几何子类型(如POINT_2D、POLYGON_2D)作为参数。

ST_ASText能正常运行是因为该函数内部支持自动处理BLOB格式的WKB数据,但ST_GeometryType没有这个隐式转换逻辑,必须显式转换参数类型。

解决方案

显式用ST_GeomFromWKB将BLOB类型的geometry字段转换为GEOMETRY类型,再传入ST_GeometryType:

SELECT DISTINCT ST_GeometryType(ST_GeomFromWKB(geometry)) AS geom_type 
FROM 'PathTo\\*.parquet';

如果需要重复查询,建议先将数据转换后存入表,避免每次转换:

-- 创建转换后的表
CREATE TABLE geo_data AS 
SELECT ST_GeomFromWKB(geometry) AS geometry 
FROM 'PathTo\\*.parquet';

-- 查询几何类型
SELECT DISTINCT ST_GeometryType(geometry) AS geom_type FROM geo_data;

验证步骤

可以先确认geometry字段的类型:

DESCRIBE SELECT geometry FROM 'PathTo\\*.parquet' LIMIT 1;

执行后会看到该字段类型为BLOB,验证问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:02:27