2013-04-24 57 views
1

我需要一次將行插入到oracle表中一行。如果重複,由於PK設置,它不會被插入。我需要拒絕將重複行插入到數據庫表中。RODBC無法將記錄一次插入到oracle表中一行

我這樣做使用RODBC,即使沒有重複的值在晚上7:00 PM之後,不能夠在下午7:00之後將記錄插入到表中。 Dat數據幀具有在7PM之前和7PM之後的值。但目標oracle表在7PM之後沒有任何值。任何想法,我可以如何實現這一點,以確保值一次一行地插入表中?

tryCatch({ 

    ch=odbcConnect("<id>",pwd = "<password>") 
    sqlSave(ch,dat, tablename="<tablename>", rownames=FALSE, append=TRUE, fast=FALSE) 
    },error = function(e) { 
    print(e) 
    }) 
    odbcClose(ch) 

我得到這個錯誤:

<simpleError in sqlSave(ch, dat, tablename = "<tablename>", rownames = FALSE,  append = TRUE, fast = FALSE): un 
able to append to table '<tablename'> 

回答

0

我想過這個解決辦法,但開放給任何其他解決方案,如果快。

這是我如何一次處理一條記錄並插入數據庫。如果重複記錄,則重複記錄將被拒​​絕,R將繼續記錄下一條記錄:

for (k in 1:nrow(dat)) 
    { 

    j<-dat[k,] 

     tryCatch({ 

        ch=odbcConnect("<id>",pwd = "<password>") 
        sqlSave(ch,j, tablename="<TableName>", rownames=FALSE, append=TRUE) 
       },error = function(e) { 
      print(e) 
      }) 
} 

odbcClose(ch) 
相關問題