2017-06-07 16 views
0

私はMacでRedshiftのデータベースに接続しようとしています。
私はdplyrとRPostgreSQLの両方でRedshiftに接続することができましたが、スキーマに関係なく使用可能なすべてのテーブルを見ることはできますが、それらはすべて別のスキーマの下にあるためアクセスできません。
私はスキーマを指定するためにあらゆる種類の構文を試しましたが、私はどこにもいません。dplyrまたはRPostgreSQLを使用するスキーマでRにアクセスするredshiftテーブル

は、ここに私のRPostgreSQLコードです:

library(RPostgreSQL) 
drv <- dbDriver("PostgreSQL") 
postgre.conn <-dbConnect(drv, 
    host="localhost", port="XXXX", dbname="redshiftdb", 
    user="XXXX", password="XXXX") 
dbListTables(postgre.conn) 

これは関係なく、スキーマのすべてのテーブルが一覧表示されます。

私はこのように、特定のスキーマの下ですべてのテーブルを見ることができます動作します:

dbGetQuery(postgre.conn, 
     "SELECT table_name FROM information_schema.tables 
     WHERE table_schema='my_schema'") 

が、私は、これらのコマンドのいずれかとmy_schema.my_tableからデータにアクセスすることができないよ:

dbSendQuery(postgre.conn,"SELECT * FROM my_table LIMIT 10") 
dbSendQuery(postgre.conn,"SELECT * FROM my_schema.my_table LIMIT 10") 
dbSendQuery(postgre.conn,"SELECT * FROM my_table WHERE table_schema='my_schema' LIMIT 10") 
dbSendQuery(postgre.conn,"SELECT * FROM c("my_schema", "my_table") LIMIT 10") 

は同様にここに私のdplyrコードです:

library(dplyr) 
dplyr.conn <- src_postgres(host="localhost", port="XXXX", 
    dbname = "redshiftdb", user = "XXXX", password = "XXXX") 
head(src_tbls(dplyr.conn)) # lists all the tables, regardless of schema 

しかし、その後、これらの作品のどれも:

tbl(dplyr.conn, sql("SELECT * FROM my_table LIMIT 10")) 
tbl(dplyr.conn, sql("SELECT * FROM my_schema.my_table LIMIT 10")) 

、私はまたのような両方の場合の検索パスを指定してみました:

dplyr.conn <- src_postgres(host="localhost", port="XXXX", 
        dbname = "redshiftdb", user = "XXXX", password = "XXXX", 
        options="-c search_path=my_schema") 

postgre.conn <-dbConnect(drv, 
      host="localhost", 
      port="XXXX", 
      dbname="redshiftdb", 
      user="XXXX", 
      password="XXXX", 
      options="-c search_path=my_schema") 

が、これらはまだ動作しませんでした:

tbl(dplyr.conn, sql("SELECT * FROM my_table LIMIT 10")) 
dbSendQuery(postgre.conn,"SELECT * FROM my_table LIMIT 10") 

任意のアイデア...?

答えて

1

in_schema()コマンドを使用してください。コードは次のようなものになります。

t <- tbl(dplyr.conn, in_schema("sheman_name", "table_name") 
+0

どうもありがとうございます – chrisjacques

関連する問題