2013-04-24 61 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) 
相关问题