如何使用 dplyr 和 RPostgreSQL 将 r 连接到 redshift?

Posted

技术标签:

【中文标题】如何使用 dplyr 和 RPostgreSQL 将 r 连接到 redshift?【英文标题】:how to use dplyr and RPostgreSQL to connect r to redshift? 【发布时间】:2016-10-11 05:20:19 【问题描述】:

我正在尝试根据https://blogs.aws.amazon.com/bigdata/post/Tx1G8828SPGX3PK/Connecting-R-with-Amazon-Redshift 中的方法使用 dplyr 和 RPostgreSQL 将 R 连接到 Redshift

现在我知道了我的数据库、主机端口、用户名和密码。所以,这是我的代码:

> myRedshift <- src_postgres('aaa',
                            host = 'aaa-aaa-aaa.com',
                            port = 8000,
                            user = "xy", 
                            password = "xy")

运行此行后,我有一个 myRedshift 列表。看起来不错。但是,当我运行时:

  a <- tbl(myRedshift, "base_posdata")

问题是:数据库 aaa 包含几个文件夹,例如 a1、a2、a3。表 base_posdata 在 a1 下。所以它应该是这样的:

a <- tbl(myRedshift, "a1//base_posdata")

当然格式不正确。所以当我使用上面的代码时(a

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR: relation "base_posdata" does not exist)

我猜这是因为我没有提供正确的路径。 谁能告诉我该怎么做?非常感谢。

【问题讨论】:

Postgres 的数据库模型包括数据库、模式、表和列。确保您在查询中正确解决了每个问题。 如果我使用 Alteryx 连接 Redshift 中的数据。我可以使用以下方式选择数据:1.选择表或指定查询,2.单击“表”按钮,3.选择显示为“aaa”.“a1”.“base_posdata”的表。您能否解释一下这是否意味着它是一张桌子或其他东西?我该如何处理呢?谢谢 【参考方案1】:

只要想办法解决这个问题:使用 sql 之类的:

> a <- tbl(myRedshift, sql("SELECT * FROM aaa.a1.base_posdata"))

问题解决了

【讨论】:

以上是关于如何使用 dplyr 和 RPostgreSQL 将 r 连接到 redshift?的主要内容,如果未能解决你的问题,请参考以下文章

R 在使用 dplyr 或 RPostgreSQL 的模式下访问 redshift 表

使用 dplyr 连接到 SSL 加密的远程数据库

如何使用 libssl 和 libpg 和 SSL 激活编译 RpostgreSQL

如何使用 RPostgreSQL 将表写入 Panoply?

如何中断 R 中的 RPostgresql 查询

将 RpostgreSQL 与 sqldf 一起使用会使 R 崩溃