每天我从外部网站获取数据并使用RODBC将数据上传到oracle表。这似乎是直截了当的,但是我从外部站点提取的数据可能是重复的(这意味着数据中可能已存在于oracle表中的某些行)。
我目前正在这样做以加载数据:
insert<-function(x){
tryCatch({
x<-x[complete.cases(x),]
x<-unique(x)
x[, 3:5] <- sapply(x[, 3:5], as.character)
x[, 3:5] <- sapply(x[, 3:5], as.numeric)
ch=odbcConnect("<id>",pwd = "<passwd>")
sqlSave(ch,x, tablename="<tablename>", rownames=FALSE, append=TRUE)
print("insert of dat is successfull!!!!")
},error = function(e) {
print("insert failed!!!!")
print(odbcGetErrMsg(ch))
})
odbcClose(ch)
}
我测试了这个,它表明如果我的数据框中有一个重复的条目要插入到oracle表中,整个sqlSave就会失败。
如果整个sqlSave命令失败,我可以尝试一次插入一行,但这需要forewever完成。脚本永远不会赶上。
我很想知道是否有sqlSave选项或任何东西只是忽略重复记录并插入其他内容与sqlSave。任何见解都非常感激。