我需要一次一行地向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'>
答案 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)