我使用dplyr(函数scr_postgres)在redshift中与我的数据库建立连接,但因为它在模式下我无法选择表。
尝试在没有架构的情况下访问我收到了错误:
requests <- tbl(my_db, "sessions")
Error in postgresqlExecStatement(conn, statement, ...) : RS-DBI driver: (could not Retrieve the result : ERROR: relation "sessions" does not exist
尝试使用一个字符串中的架构进行访问时出现错误:
requests <- tbl(my_db, "analytics.sessions")
Erro: Table analytics.sessions not found in database
尝试使用架构组合字符串进行访问时出现错误:
requests <- tbl(my_db, c("analytics", "sessions"))
Erro: length(from) not equal to 1
但是在RPostgreSQL中它可以工作:
dbExistsTable(my_db$con, c("analytics", "sessions"))
[1] TRUE
答案 0 :(得分:3)
根据@mike_db here的建议,我可以在search_path中设置架构。
为此我需要在src_postgres的连接开头设置[ options ]参数:
my_db <- src_postgres(host="host", port="5439",
dbname = "dbname", user = "user", password = "XXXX",
options="-c search_path=analytics")
或者,您可以在选择表格时使用类似的内容:
requests <- tbl(my_db, sql("SELECT * from analytics.sessions WHERE 0=1"))