将新数据追加到R中的sqlite数据库

将新数据追加到R中的sqlite数据库,r,r-dbi,rsqlite,R,R Dbi,Rsqlite,我使用以下代码从R在sqlite3数据库中创建了一个表:- con <- DBI::dbConnect(drv = RSQLite::SQLite(), dbname="data/compfleet.db") s<- sprintf("create table %s(%s, primary key(%s))", "PositionList", paste(names(FinalTab

我使用以下代码从R在
sqlite3
数据库中创建了一个表:-

con <- DBI::dbConnect(drv = RSQLite::SQLite(),
                      dbname="data/compfleet.db")
s<- sprintf("create table %s(%s, primary key(%s))", "PositionList",
                             paste(names(FinalTable), collapse = ", "),
                             names(FinalTable)[2])
dbGetQuery(con, s)

dbDisconnect(con)
返回一个错误:

Error in result_bind(res@ptr, params) : 
  UNIQUE constraint failed: PositionList.UID

如何实现仅追加新的
UID
值的任务,而不更改现有的
UID
值,即使它们在我运行更新脚本时出现?

当您要插入数据时,首先使用UID从数据库中获取数据。如果数据不存在,则无需执行其他操作,使用新UID插入新数据。重复主键(UID)recard不存在,因此显示错误。

您可以查询现有UID(作为一列数据帧),并从要插入的表中删除相应的行

uid_df <- dbGetQuery(con, "SELECT UID FROM PositionList")
dbWriteTable(con, "PositionList", FinalTable[!(FinalTable$UID %in% uid_df[[1]]), ], ...)
uid\u-df
uid_df <- dbGetQuery(con, "SELECT UID FROM PositionList")
dbWriteTable(con, "PositionList", FinalTable[!(FinalTable$UID %in% uid_df[[1]]), ], ...)