我正在使用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)发布于 2013-04-28 04:48:34
将odbcConnect移出每条记录的循环。
https://stackoverflow.com/questions/16242097
复制相似问题