RODBC无法一次一行地将记录插入到oracle表中

时间:2013-04-24 17:56:28

标签: r oracle

我需要一次一行地向oracle表插入行。如果重复,由于PK设置,它将不会被插入。我需要拒绝将重复的行插入到db表中。

我使用RODBC这样做,即使在桌子上晚上7点之后没有重复值,也不能在晚上7点之后将记录插入到表中。 Dat数据帧具有之前和之后7PM以及之后的值。但是目标oracle表在晚上7点之后没有任何值。任何想法,我怎么能实现这一点,以确保一次一行地将值插入表中?

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'>

1 个答案:

答案 0 :(得分: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)