2014-09-11 26 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年記錄的非常小的量好。