我使用“RPostgreSQL”软件包将R连接到亚马逊Redshift我可以连接,创建和删除表,查询数据库,将数据保存到R数据框并手动插入值。
我不能做的是直接从R数据框插入Redshift读取数据,由于在redshift中缺少Posgress组件,我无法使用dbWriteTable函数。
我做错了什么?
提前感谢您的帮助!
答案 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条记录半小时。