私は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")
任意のアイデア...?
どうもありがとうございます – chrisjacques