5

我正在尝试使用 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"
4

3 回答 3

14

如果要与命名模式中的表进行交互,请使用以下(不直观的)语法:

dbExistsTable(con, c("schema_name", "table_name"))
[1] TRUE

尽管dbListTables(con)返回所有表名而没有关联的模式,这仍然有效。

于 2014-03-06T14:51:10.123 回答
0

我怀疑是权限问题。请通过或其他场所尝试 SQL 命令psql以排除任何后端权限问题。

你的命令在这里对我很好:

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> 
于 2012-05-17T19:18:54.443 回答
0

等效RPostgres语法是

dbExistsTable(con, Id(schema = "schema_name", table = "table_name"))

于 2020-11-10T04:03:28.313 回答