gpt4 book ai didi

RMYSQL-插入忽略,替换-R

转载 作者:行者123 更新时间:2023-12-05 07:58:01 24 4
gpt4 key购买 nike

我正在使用 RMySQL 包将数据从 R 导出到 MySQL 数据库。我面临的一个大问题是重复项:我有太多具有相同值的条目。系统自动生成结果并将dataframe插入数据库。

数据库中的当前表:

Name   Balance  
Bob 100
Ted 150
Carl 130

我在 R 中也有一个数据框 (df) 反射(reflect)了余额的变化:

> df
Name Balance
[1] Bob 100
[2] Ted 150
[3] Bill 50

要插入数据库的数据:

Name   Balance
Bill 50

插入后,表格应该如下所示:

Name   Balance
Bob 100
Ted 100
Carl 130
Bill 50

但是我的 dbwrite 产生了这个:

Name   Balance
Bob 100
Ted 100
Carl 130
Bob 100
Ted 150
Bill 50

我正在使用这段代码:

dbWriteTable(con, "DB Table name", rbind(Dataframe), row.names=FALSE,append=TRUE)

有没有办法在 R 中使用 RMYSQL 检查现有表并仅使用新表更新表。

最佳答案

不要使用 dbWriteTable(),而是使用 dbSendQuery()。您可以构建一个 SQL 查询来插入数据框的每一行:

df <- data.frame(name=c('Bob','Ted','Bill'), balance=c(100,150,50))
strSQL <- paste(
'insert into your_table (name, balance) values',
paste(sprintf("('%s', %f)", df$name, df$balance), collapse=', '),
'on duplicate key update balance = values(balance)',
sep = ' '
)
# The query will be something like this:
# insert into your_table (name, balance)
# values ('Bob', 100.000000), ('Ted', 150.000000), ('Bill', 50.000000)
# on duplicate key update balance = values(balance);
# Important: If you want this to work, you must ensure that there's a unique
# index on column 'name' in your_table
dbSendQuery(con, strSQL)

关于RMYSQL-插入忽略,替换-R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667376/

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