2012-05-17 64 views
3

我想使用RPostgreSQL和R v2.14.2將表讀入R中。
我的RPostgreSQL版本列爲0.3-2,2012年5月16日下載。
我的DBI版本列爲0.2-5,2012年5月16日下載。爲什麼我不能讀取我的表,雖然它是由dbListTables列出的?

我可以打開數據庫,並列出表格。我想打開的表格顯然存在,但是,當我嘗試讀取它時,出現錯誤消息。我不確定錯誤是在我的代碼還是數據庫設置的方式。

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

dbExistsTable(con,「\」ecog \「」)'返回什麼?我用RPostgreSQL加了一些額外的引號,雖然它可能是我做錯了。 –

+0

感謝您的發帖。我嘗試了dbExistsTable(con,「\」ecog \「」),它仍然返回FALSE –

回答

11

如果想用一個表,在一個名爲架構,交互使用下面的(直觀的)語法:

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

這工作雖然dbListTables(con)返回所有沒有關聯模式的表名。

+0

...以供參考,RPostgres不一定以相同的方式迴應。 :/ – russellpierce

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> 
+1

經過一番調查後,我發現我們可以讀寫** public **模式,但不能讀取其他命名模式。當我使用'dbListTables'命令時,公共模式和命名模式中的所有文件都會出現。 –

+0

查看Google Groups上的'rpostgresql-dev'列表 - 這已經出現過了,我記得有點模糊地與模式的低位拼寫或大寫拼寫有關。大小寫關於PostgreSQL; SQL標準對此沒有提及。 –

相關問題