R:如何使用dplyr(函数scr_postgres)从redshift中的模式中选择表?

时间:2015-09-08 12:34:14

标签: r dplyr amazon-redshift

我使用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

1 个答案:

答案 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"))