每天我从外部站点提取数据并使用 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 命令失败,我可以尝试一次插入一行,但这需要永远完成。脚本永远赶不上。
我很想知道是否有 sqlSave 选项或任何可以忽略重复记录并使用 sqlSave 插入其他内容的选项。非常感谢任何见解。