使用jdbc插入数据时,将WKT转换为雪花中的地理数据类型时出错

使用jdbc插入数据时,将WKT转换为雪花中的地理数据类型时出错,jdbc,geometry,gis,geospatial,snowflake-cloud-data-platform,Jdbc,Geometry,Gis,Geospatial,Snowflake Cloud Data Platform,我试图在使用JDBC将wkt格式的数据插入地理列时出错 我使用的代码是 private static final String QUERY_SNOWFLAKE = "INSERT INTO %s " + "(GEOM_AS_WKB, GEOM_AS_WKT, GEOID, NAMELSAD, TRACTCE, BLKGRPCE, INSIDE_CENTROID_LATITUDE, " + "

我试图在使用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());

我得到的错误

VALUES子句中的无效表达式[IFF(强制转换(解析WKT(?)为变量)为NULL、NULL、对象构造(“'U shape',强制转换(解析WKT(?)为变量)、'version',1',has_internal',TRUE',internal',GEOGRAPHY_COMPUTE_internal(强制转换(解析WKT(?)为变量)为对象))]

有人知道这个错误吗


谢谢

您可以直接将WKT、WKB或GeoJSON值插入地理列,而无需调用解析函数。Snowflake将计算出值的格式并尝试自动解析它。这应该适合您:

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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
        "?, ?, ?, ?, ?)";

preparedStatementCENSUS_BLOCK_GROUP_GEOGRAPHY.setString(22,censusBlockGroupGeographyModel.getTheGeomText());

纳闷:你有没有直接在Snowflake中而不是通过jdbc来尝试这种说法?结果是什么?是的,在《雪花》中,它正在工作,但使用jdbc,相同的查询不工作。我不明白的是:错误表明有一个无效的查询,其中包含
IFF
PARSE\u WKT
——我们在发布的查询中找不到。我认为这个问题缺少相关代码。@FelipeHoffa只有这个查询是通过JDBC运行的,我们看到的错误可能是在将wkt转换为geometryOh right时,函数ST_GEOGRAPHYFROMWKT(?)内部发生的情况-这是有意义的。您还可以共享censusBlockGroupGeographyModel.getthergeomtext()的输出吗??谢谢您的回答。这真的很有帮助。