2013-04-26 19 views
0

我正在使用RODBC將數據幀插入到oracle表中。我在表上設置了主鍵,如果有重複的數據框出現,oracle會拒絕它。爲了確保我不會丟失任何數據,首先我嘗試插入整個數據框,如果有錯誤,我會嘗試一次插入每條記錄。但是,當我一次嘗試插入每條記錄時,完成時間很長。我很好奇,有沒有人做過這樣的工作,這個方法是什麼。我的代碼如下:使用rodbc提高在R中將數據幀插入到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) 

回答

0

將odbcConnect移出每個記錄循環。

+0

謝謝你的提示。我做到了,但仍需要很長時間。我修改了原來的帖子。 – user1471980 2013-04-29 13:46:41

相關問題