如何用R语言sf包从.gdb数据库读取带连字符的字段?
解决SF包读取GDB时带连字符字段的SQL查询错误
问题核心是SQL解析逻辑:当字段名包含连字符-时,SQL会把AUM-Code误认为是AUM - Code(减法运算),因此报错找不到AUM字段。
解决办法是给带特殊字符的字段名加上双引号,明确告知SQL这是一个完整的字段名,修改后的代码如下:
library(sf) library(tidyverse) # 给带连字符的字段名添加双引号 query <- paste("SELECT jahr, \"AUM-Code\" FROM", "AUM_2018") res <- st_read(dsn = "AUM_2018.gdb", query = query) head(res)
也可以用单引号包裹整个SQL语句,避免转义双引号,写法更简洁:
query <- 'SELECT jahr, "AUM-Code" FROM AUM_2018'
注意:GDAL底层使用的OGR SQL方言中,双引号是标识含特殊字符字段名的标准方式,这种方法同样适用于字段名包含空格、特殊符号的场景。
内容的提问来源于stack exchange,提问作者Hugo
相关产品推荐
相关产品推荐

