【发布时间】:2011-11-02 07:07:08
【问题描述】:
在使用 RODBC 从 R 连接到 GreenPlum PostgreSQL 数据库时,我遇到了一个以前从未遇到过的新错误。我在使用 EMACS/ESS 和 RStudio 时都遇到了错误,并且 RODBC 调用与过去一样工作。
library(RODBC)
gp <- odbcConnect("greenplum", believeNRows = FALSE)
data <- sqlQuery(gp, "select * from mytable")
> data
[1] "22P05 7 ERROR: character 0xc280 of encoding \"UTF8\" has no equivalent in "WIN1252\";\nError while executing the query"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select * from mytable'"
编辑: 刚刚尝试查询另一个表并得到了结果。所以我猜这不是 RODBC 问题,而是 PostgreSQL 表编码问题。
R version 2.13.0 (2011-04-13)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RODBC_1.3-2
>
【问题讨论】:
-
它在正常的 R 会话中工作吗?在这种情况下,
sessionInfo()的输出可能会有所帮助。看起来有些事情发生了变化,以至于一个或两个系统语言环境/编码发生了变化。 (顺便说一句,odbcConnect()调用中的参数名称believeNRows不是错字吗?) -
@Gavin 不,它在正常的 R 会话中不起作用 - 刚刚尝试过。我刚刚添加了 sessionInfo() 的输出,并修正了错字。
标签: r postgresql rodbc greenplum