2017-07-19 66 views
1

我有以下數據被髮送到紅移與替換表命令 - 是否有一個命令,而不是將新行添加到表而不是替換整個事情?添加行到紅移表而不是替換表

PipelineSimulation<-matrix(,42,7) 
PipelineSimulation<-as.data.frame(PipelineSimulation) 
PipelineSimulation[1,1]<-"APAC" 
PipelineSimulation[1,2]<-"Enterprise" 
and so on through 
PipelineSimulation[42,3]<-"Commit" 
PipelineSimulation[42,4]<-"Upsell" 
PipelineSimulation[42,5]<-NAMEFURate 
PipelineSimulation[42,6]<-mean(NFUEntTotals) 
PipelineSimulation[,7]<-Sys.time() 

然後進入它的紅移我用

library(RPostgres) 
library(redshiftTools) 
library(RPostgreSQL) 
library("aws.s3") 
library("DBI") 
drv<-dbDriver('PostgreSQL') 
con <- dbConnect(RPostgres::Postgres(), host='bi-prod-dw- 
instance.cceimtxgnc4w.us-west-2.redshift.amazonaws.com', port='5439', 
dbname= '***', user="***", password="***", sslmode='require') 
query="select * from everyonesdb.jet_pipelinesimulation_historic;" 
result<-dbGetQuery(con,query) 
print (nrow(result)) 
Sys.setenv("AWS_ACCESS_KEY_ID" = "***", 
     "AWS_SECRET_ACCESS_KEY" = "***", 
     "AWS_DEFAULT_REGION" = "us-west-2") 
b=get_bucket(bucket = 'bjnbi-bjnrd/jetPipelineSimulation') 
rs_replace_table(PipelineSimulation, con, 
tableName='everyonesdb.jet_pipelinesimulation_historic', bucket='bjnbi- 
bjnrd/jetPipelineSimulation',split_files =2) 

所以不是rs_replace_table,我想保留舊的數據,只需添加新行到現有的表,如果可能的話

回答

1

How to bulk upload your data from R into Redshift

rs_replace_table截斷目標表,然後lo它完全從數據框中進行廣告,只有在您不關心其當前數據的情況下才會這樣做。

另一方面,rs_upsert_table將替換具有相同鍵的行,並插入表中不存在的行。

是否使用rs_upsert_table代替rs_replace_table解決您的問題?

+0

爲此定義的鍵是如何相符的? – JTepper

+0

rs_upsert_table(my_other_data,dbcon = con,tableName ='mytable',bucket =「mybucket」,keys = c('id','date'))'''rs_upsert_table'中用戶自定義的鍵。在這種情況下,一致的鍵將是具有相同ID和日期值的行。 – Tiffany

相關問題