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对象更新为红移的主要内容,如果未能解决你的问题,请参考以下文章