4
我使用包「RPostgreSQL」將R連接到亞馬遜Redshift我可以連接,創建和刪除表,查詢數據庫,將數據保存到R數據框中並手動插入值。將數據從R數據集寫入Redshift
我不能做的是將數據插入Redshift直接從R數據框中讀取,並且由於在Redshift中丟失了Posgress組件,我無法使用dbWriteTable函數。
我在做什麼錯?
在此先感謝您的幫助!
我使用包「RPostgreSQL」將R連接到亞馬遜Redshift我可以連接,創建和刪除表,查詢數據庫,將數據保存到R數據框中並手動插入值。將數據從R數據集寫入Redshift
我不能做的是將數據插入Redshift直接從R數據框中讀取,並且由於在Redshift中丟失了Posgress組件,我無法使用dbWriteTable函數。
我在做什麼錯?
在此先感謝您的幫助!
只需使用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年記錄的非常小的量好。
沒有任何Redshift的經驗,我認爲如果你提供了一些示例代碼或一個不起作用的(最小)示例,你將更有可能得到答案。 – speendo 2014-09-11 09:27:28
@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
@speedo我得到的錯誤是: 錯誤is(object,Cl): 在爲函數'dbWriteTable'選擇方法時評估參數'conn'時出錯:錯誤:未找到對象'con' – 2014-09-11 10:16:59