我正在尝试使用RPostgreSQL和R v2.14.2将表读入R中 我的RPostgreSQL版本列为0.3-2,已于2012年5月16日下载 我的DBI版本列为0.2-5,已于2012年5月16日下载。
我可以打开数据库,并列出表格。我要打开的表格显然存在,但是,当我尝试阅读它时,我收到一条错误消息。我不确定错误是在我的代码中还是在数据库的设置方式中。
library(RPostgreSQL)
# Loading required package: DBI
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host = 'freda.freda.com', dbname = 'test', user = 'fredak', password = 'xxxx')
dbListTables(con)
# [1] "chemistry”
# [2] "ecog”
# [3] "hematology"
dbExistsTable(con, "ecog")
# [1] FALSE
MyTable <- dbReadTable(con, "ecog")
# Error in postgresqlExecStatement(conn, statement, ...) :
# RS-DBI driver: (could not Retrieve the result : ERROR: relation "ecog" does not exist
# LINE 1: SELECT * from "ecog"
# ^
# )
# Error in names(out) <- make.names(names(out), unique = TRUE) :
# attempt to set an attribute on NULL
# In addition: Warning message:
# In postgresqlQuickSQL(conn, statement, ...) :
# Could not create executeSELECT * from "ecog"
答案 0 :(得分:11)
如果想要与命名模式中的表进行交互,请使用以下(非直观)语法:
dbExistsTable(con, c("schema_name", "table_name"))
[1] TRUE
尽管dbListTables(con)
返回所有没有关联模式的表名,但仍可正常工作。
答案 1 :(得分:0)
我怀疑是权限问题。请通过psql
或其他地点尝试SQL命令以排除任何后端权限问题。
你的命令在我这里工作正常:
R> library(RPostgreSQL)
Loading required package: DBI
R> drv <- dbDriver("PostgreSQL")
R> con <- dbConnect(drv, dbname="beancounter", user="edd", password="xxxxxx")
R> dbListTables(con)
[1] "beancounter" "cash" "fxprices" "indices" "meta"
[6] "portfolio" "portfoliosold" "stockinfo" "stockprices"
R> dbExistsTable(con, "cash")
[1] TRUE
R> dbExistsTable(con, 'cash')
[1] TRUE
R> dbExistsTable(con, 'Cash')
[1] FALSE
R> dbExistsTable(con, "Cash")
[1] FALSE
R> ccc <- dbReadTable(con, "cash")
R> dim(ccc)
[1] 24 7
R>
答案 2 :(得分:0)
等效的RPostgres
语法是
dbExistsTable(con, Id(schema = "schema_name", table = "table_name"))