如何将WKB格式几何图形插入Oracle数据库SDO_GEOMETRY字段表?
Oracle Spatial 直接用WKB插入SDO_GEOMETRY的最优方案
正确实现方式
直接使用SDO_UTIL.FROM_WKBGEOMETRY函数配合HEXTORAW转换,即可将WKB十六进制字符串转为SDO_GEOMETRY对象插入,示例语句如下:
INSERT INTO 你的表名 (geom字段名) VALUES (SDO_UTIL.FROM_WKBGEOMETRY(HEXTORAW('0101000020110F00003E2773E2619649408FCD44C7C4C64140')));
你之前尝试的方法无效原因
- 直接传字符串给
SDO_UTIL.FROM_WKBGEOMETRY:该函数要求输入为RAW类型,不能直接传入十六进制字符串,必须通过HEXTORAW转换格式。 - 用
SDO_GEOMETRY构造函数直接解析WKB:这个构造函数仅支持标准几何参数格式或WKT字符串,不支持直接解析WKB数据。
额外注意事项
- 如果你的WKB数据不包含SRID信息(即WKB开头为
0101000000而非带SRID标识的0101000020),插入后需要手动设置SRID,示例:UPDATE 你的表名 SET geom.SDO_SRID = 4326 WHERE 条件; - 可以用
SDO_UTIL.TO_WKTGEOMETRY验证转换结果:SELECT SDO_UTIL.TO_WKTGEOMETRY(geom字段名) FROM 你的表名;
内容的提问来源于stack exchange,提问作者ali nakhaee
相关产品推荐
相关产品推荐

