我正在使用 RODBC 将数据帧插入到 oracle 表中。我在表上设置了主键,如果出现重复的数据框,oracle 将拒绝它。为了确保我没有丢失任何数据,首先我尝试插入整个数据框,如果有任何错误,我将尝试一次插入每条记录。但是当我尝试一次插入每条记录时,需要很长时间才能完成。我很好奇,有没有人做过这样的工作,方法是什么。我的代码如下:
tryCatch({
ch=odbcConnect("<id>",pwd = "<password>")
sqlSave(ch,dat, tablename="<tablename>", rownames=FALSE, append=TRUE)
},error = function(e)
{
print("unable to insert the data frame, will try by each row")
ch=odbcConnect("<id>",pwd = "<password>")
for (k in 1:nrow(dat))
{
j<-dat[k,]
tryCatch({
sqlSave(ch,j, tablename="<tablename>", rownames=FALSE, append=TRUE)
},error = function(e) {
print("unable to insert, duplicate values")
})
}
odbcClose(ch)
})
odbcClose(ch)