将新数据追加到R中的sqlite数据库
我使用以下代码从R在将新数据追加到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
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]]), ], ...)