2014-09-11 70 views
4

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

我不能做的是将数据插入Redshift直接从R数据框中读取,并且由于在Redshift中丢失了Posgress组件,我无法使用dbWriteTable函数。

我在做什么错?

在此先感谢您的帮助!

+0

没有任何Redshift的经验,我认为如果你提供了一些示例代码或一个不起作用的(最小)示例,你将更有可能得到答案。 – speendo 2014-09-11 09:27:28

+0

@Speendo我运行的代码是: install.packages( “RPostgreSQL”) 库( “DBI”) 库( “RPostgreSQL”) DRV < - dbDriver( “PostgreSQL的”) redshift_con < - 数据库连接( drff2,凭证在这里....) r_c_100 < - dbSendQuery(redshift_con,“select * from public.dc_c limit 100”) r100 < - fetch(r_c_100,n = -1) dbWriteTable(redshift_con,“newTable”, r100) – 2014-09-11 10:06:29

+0

@speedo我得到的错误是: 错误is(object,Cl): 在为函数'dbWriteTable'选择方法时评估参数'conn'时出错:错误:未找到对象'con' – 2014-09-11 10:16:59

回答

4

只需使用RODBC包自行解决它。

您需要设置一个ODBC连接,我们称之为redshift_con。

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

装我的R中数据帧,并拼命地跑:

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

和R创造了红移一个新的表名为“ 从r比你需要创建一个连接使用(我把它叫做CH) 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) 

我会后对处理速度的注释。

UPDATE

仅用于数据

半小时为1500年记录的非常小的量好。