【问题标题】:Writing data from an R data-set into Redshift将 R 数据集中的数据写入 Redshift
【发布时间】:2014-09-11 09:16:44
【问题描述】:

我正在使用“RPostgreSQL”包将 R 连接到亚马逊 Redshift,我可以连接、创建和删除表、查询数据库、将数据保存到 R 数据框并手动插入值。

我不能做的是将数据直接从 R 数据帧读取插入 Redshift,由于 redshift 中缺少 Posgress 组件,我无法使用 dbWriteTable 函数。

我做错了什么?

提前感谢您的帮助!

【问题讨论】:

  • 在没有任何 Redshift 经验的情况下,如果您提供一些示例代码或不起作用的(最小)示例,我认为您更有可能得到答案。
  • @Speendo 我正在运行的代码是: install.packages("RPostgreSQL") library("DBI") library("RPostgreSQL") drv
  • @speedo 我得到的错误是:is(object, Cl) 中的错误:在为函数“dbWriteTable”选择方法时评估参数“conn”时出错:错误:对象“con” '未找到
  • 抱歉,我无法帮助您解决这个问题。但也许其他人可以处理这个问题,特别是如果您将此信息添加到您的问题中。
  • @speedo 实际上刚刚找到了解决方案,对于大容量来说不是最佳的,但可以工作。它使用“RODBC”包和命令 sqlSave()。但是需要提前设置好odbc连接。

标签: r amazon-redshift


【解决方案1】:

使用 RODBC 包自己解决。

您需要建立一个 ODBC 连接,我们称之为 redshift_con。 从 R 比你需要创建一个连接(我称之为 ch)使用:

ch <- odbcConnect("Annalect DB", uid = "username", pwd = "******")

在 R 中加载我的数据框并运行:

sqlSave(ch, mydataframename, addPK = TRUE, verbose = TRUE)

然后 R 在 redshift 中创建一个名为“mydataframename”的新表。速度不是很快,如果我找到并优化了方法,我会及时更新。

如果您需要更多信息,请参阅http://cran.r-project.org/web/packages/RODBC/index.html

################ SAMPLE CODE FOR TESTING ##############
install.packages("RODBC")
library('RODBC')
ch <- odbcConnect("redshift_con", uid = "admin", pwd = "********")
sqlColumns(ch, "public.r_test")
USArrest<-data(USArrests)
sqlSave(redshift_con, USArrests, rownames = "State", addPK = TRUE, verbose = TRUE)

我会就处理速度发表评论。

更新

仅适用于非常少量的数据

1500 条记录半小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2020-12-16
    相关资源
    最近更新 更多