我正在从R将数据写入Vertica DB中的表中。我正在使用DBI和RJDBC软件包执行此操作。我连接到DB,验证表是否包含数据,将其删除并重写其他数据。
这是脚本
tryCatch({verticaConn =dbConnect(vDriver, "jdbc:vertica://****/company", "***", "****")},
error=function(e)
{
Logging("error",paste("Error conncecting to Vertica:",e))
})
data<-data.frame(x=c(1,2,3),y=c(1,2,3))
query<-"SELECT * FROM ESPDM.QUOTAZIONI_R_OUTPUT LIMIT 5"
get_query = dbGetQuery(verticaConn,query)
if (nrow(get_query)>0)
{
query<-"DELETE FROM QUOTAZIONI_R_OUTPUT"
get_query = dbSendUpdate(verticaConn,query)
}
dbWriteTable(verticaConn, "QUOTAZIONI_R_OUTPUT",
as.data.frame(data))
该脚本很好用,但似乎每次运行此脚本时都会删除表并重新创建表,在这种情况下,这是不可接受的,因为其他人正在从该表中读取数据,并且每次创建表时都会丢失授权。 谢谢
答案 0 :(得分:0)
答案:您需要指定append = TRUE和overwrite = FALSE。如果您仅指定append = TRUE而不指定overwrite = FALSE,则它将无法正常工作。
timedelta