不是将整个表追加或覆盖到数据库,而是RMySQL中是否有任何只能更新表的一部分的函数?因为有些日子我们的某些数据可能不完整,所以我需要保留旧表并且只替换有新数据的行,这是我写的函数,但是没有用,任何帮助都会受到赞赏:
col.info <- "(id int, timestamp bigint, yyyy int, mm int, dd int, value double,
PRIMARY KEY(id, timestamp, yyyy, mm, dd))"
Func <- function(con, tbl.name, dat.set, col.info) {
if (dbExistsTable(con, tbl.name)) {
dbWriteTable(con, tbl.name, dat.set, row.names=F, append=T); #what can I change the append for??
} else {
dbSendQuery(con, paste("CREATE TABLE IF NOT EXISTS", tbl.name, col.info, sep=" "));
dbWriteTable(con, tbl.name, dat.set, row.names=F, append=T);
}
}
Func(conn_table, "daily_update", df, col.info)
答案 0 :(得分:1)
我最近遇到了dbx package,它完全符合您的需要。
以下代码将在数据库表上执行upsert(重复键更新)查询。只需将where_cols参数替换为作为主键的列。
install.packages("dbx")
library(dbx)
dbx::dbxUpsert(con, tbl.name, dat.set, where_cols = c("id"))