0

我正在使用 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)
4

1 回答 1

0

将 odbcConnect 移出每个记录循环。

于 2013-04-27T20:48:33.507 回答