R将tbl对象更新为红移

Posted

技术标签:

【中文标题】R将tbl对象更新为红移【英文标题】:R update tbl object into redshift 【发布时间】:2018-08-01 15:04:30 【问题描述】:

我在 redshift db 中有一个表,我使用 copy_to 命令从 R 更新值。 插入到 R 中的变量的类是:

class(df)
[1] "tbl_dbi"  "tbl_sql"  "tbl_lazy" "tbl" 

使用的copy_to命令是:

copy_to(acc_conn, df,name = "test_output",temporary = FALSE)

但是,copy_to 命令只插入而不更新。 是否还有其他可能更新红移表?

【问题讨论】:

你用的是什么包?是 dplyr 吗? 是的,它是 dplyr 包。 更新是指追加还是更新? 抱歉耽搁了。这是 upsert。 【参考方案1】:

我写了一篇详尽的博文,解释了从 Amazon Redshift 读取/写入数据的许多细微差别:https://auth0.com/blog/a-comprehensive-guide-for-connecting-with-r-to-redshift/

特别是,使用 R 读取数据的最佳方法是使用 RPostgres 库,我建议使用我创建的 R 包写入数据:https://github.com/sicarul/redshiftTools

特别是,它具有 rs_upsert_table 函数,该函数使用您的示例对您的 data.frame 进行 upsert:

rs_upsert_table(df, dbcon=acc_conn, table_name="test_output", bucket="mybucket", split_files=4)

您需要一个 S3 存储桶和 AWS 密钥才能访问它,因为这个包会上传到 S3,然后将 redshift 定向到该存储桶,这是批量上传数据的最快方式。

【讨论】:

以上是关于R将tbl对象更新为红移的主要内容,如果未能解决你的问题,请参考以下文章

为红移数据库提供支持

红移。在条件下删除表

使用字符串函数反序列化亚马逊红移中的 php 对象

rbind tbl 和 df 给出过滤器错误

从 R 连接到亚马逊红移时出错 - Windows 10

从红移表中获取上次更新时间戳