gpt4 book ai didi

r - 如何使用 RMySQL 包更新 MySQL 表

转载 作者:行者123 更新时间:2023-12-04 05:19:27 24 4
gpt4 key购买 nike

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)

最佳答案

我最近遇到了 dbx package这正是您所需要的。

以下代码将对您的数据库表执行 upsert(在重复键更新时)查询。只需将 where_cols 参数替换为作为主键的任何列。

install.packages("dbx")
library(dbx)
dbx::dbxUpsert(con, tbl.name, dat.set, where_cols = c("id"))

关于r - 如何使用 RMySQL 包更新 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com