使用rodbc提高将数据帧插入R中的oracle表的速度

时间:2013-04-26 17:31:52

标签: r oracle rodbc

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

1 个答案:

答案 0 :(得分:0)

将odbcConnect移出每个记录循环。