5

RPostgreSQL と R v2.14.2 を使用してテーブルを R に読み込もうとしています。
私のバージョンの RPostgreSQL は 0.3-2 としてリストされており、2012 年 5 月 16 日にダウンロードされました。
DBI の私のバージョンは、2012 年 5 月 16 日にダウンロードされた 0.2-5 としてリストされています。

データベースを開き、テーブルを一覧表示できます。開こうとしているテーブルは明らかに存在しますが、読み込もうとするとエラー メッセージが表示されます。エラーがコードにあるのか、データベースのセットアップ方法にあるのかはわかりません。

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 に答える