将数据从R数据集写入Redshift

时间:2014-09-11 09:16:45

标签: r amazon-redshift

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

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

我做错了什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

使用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条记录半小时。