【发布时间】:2021-02-23 08:40:21
【问题描述】:
我尝试在使用 JDBC 将 wkt 格式数据插入地理列时出错。
我使用的代码是
private static final String QUERY_SNOWFLAKE = "INSERT INTO %s " +
"(GEOM_AS_WKB, GEOM_AS_WKT, GEOID, NAMELSAD, TRACTCE, BLKGRPCE, INSIDE_CENTROID_LATITUDE, " +
"INSIDE_CENTROID_LONGITUDE, AREA_SQUAREMILES, X_MIN, X_MAX, Y_MIN, Y_MAX, PART_COUNT, HOLE_COUNT, STATEFP, " +
"COUNTYFP, STUSPS, STATE, COUNTY, VINTAGE, GEOM) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
"?, ?, ?, ?, ST_GEOGRAPHYFROMWKT(?))";
preparedStatementCENSUS_BLOCK_GROUP_GEOGRAPHY.setString(22,censusBlockGroupGeographyModel.getTheGeomText());
我遇到的错误
无效的表达式 [IFF(CAST(PARSE_WKT(?) AS VARIANT) IS NULL, null, OBJECT_CONSTRUCT('_shape', CAST(PARSE_WKT(?) AS VARIANT), 'version', 1, 'has_internal', TRUE, '内部', GEOGRAPHY_COMPUTE_INTERNAL(CAST(CAST(PARSE_WKT(?) AS VARIANT) AS OBJECT))))] 在 VALUES 子句中
任何人都知道这个错误
谢谢
【问题讨论】:
-
想知道:您是否在 Snowflake 中直接尝试了该语句,而不是通过 jdbc?结果如何?
-
是的,在雪花中它正在工作,但使用 jdbc 相同的查询不起作用
-
我不明白的是:该错误表明存在一个无效查询,其中包含
IFF和PARSE_WKT之类的内容——我们在发布的查询中找不到这些内容。我认为这个问题缺少相关代码。 -
@FelipeHoffa 只有这个查询是通过 JDBC 运行的,我们看到的错误可能是在将 wkt 转换为几何图形时函数 ST_GEOGRAPHYFROMWKT(?) 内部发生的情况
-
哦,对了——这很有道理。你也可以分享
censusBlockGroupGeographyModel.getTheGeomText()的输出吗?
标签: jdbc geometry gis geospatial snowflake-cloud-data-platform