【发布时间】:2014-10-29 07:33:45
【问题描述】:
我正在使用 RMySQL 包从 R 将数据导出到 MySQL 数据库。我面临的一个大问题是重复:我有太多具有相同值的条目。系统自动生成结果并将数据框插入数据库。
数据库中的当前表:
Name Balance
Bob 100
Ted 150
Carl 130
我在 R 中还有一个数据框 (df),反映了余额的变化:
> 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 只用新的更新表。
【问题讨论】:
-
你的mysql表有索引吗?具体来说,是否有一个唯一索引可以让您执行
insert ... on duplicate key ... -
如何将现有行从DB读取到dataframe,与新数据比较,只有dbWriteTable有区别?
-
@zx8754 是的,我也想过,但是桌子一天比一天大。将其读入 R 将花费更多时间。
-
@Barranka 是的,它有唯一的索引。但我认为 RMySQL 包中没有 insert ON DUPLICATE key 选项。
-
如果有UNIQUE索引,那为什么要插入表中的数据呢?它应该返回一个错误。