R编程-在满足条件的情况下更新mysql数据库行

R编程-在满足条件的情况下更新mysql数据库行,r,R,我有一个与mysql数据库中的表结构相同的数据帧。我想更新mysql数据库中我的数据帧的主键与该表匹配的行 比如说 DF 1 PK Count Temperature 3 1 111 4 2 100 5 3 190 6 4 200 MySQL Table PK Count Temperature 1 1 100 2 10

我有一个与mysql数据库中的表结构相同的数据帧。我想更新mysql数据库中我的数据帧的主键与该表匹配的行

比如说

DF 1

PK Count  Temperature
3    1        111
4    2        100
5    3        190
6    4        200

MySQL Table

        PK Count  Temperature
        1    1        100
        2    10       11
        3    0        0
        4    0        0
        5    0        0
        6    0        0
        7    0        0
        8    0        0
请注意,我不能简单地覆盖该表,因为我的数据库中有数据帧中不存在的行

更新之后,我想要的是下表

 PK Count  Temperature
    1    1        100
    2    10       11
    3    1        111
    4    2        100
    5    3        190
    6    4        200
    7    0        0
    8    0        0

想法?

因此,我无法直接更新行。但是,我所做的是在我的数据库中创建一个可以从R附加到的保留表。然后我在我的数据库中创建了一个触发器来更新我所需表中所需的行。根据他们的想法,我又创造了一个触发器来清空我的等待表

 PK Count  Temperature
    1    1        100
    2    10       11
    3    1        111
    4    2        100
    5    3        190
    6    4        200
    7    0        0
    8    0        0

这是Dean的建议,但有点不同。

这里,我提供了另一种方法,将框架写入临时表,并在主表中执行更新,或者通过触发器方法获取保留表、追加和更新所需的表

我相信以下方法简单有效,因为它直接在目标表中执行更新记录

#install.packages("RMySQL")
#install.packages("DBI")
library(DBI)
library(RMySQL)

#Establish the connection
mydb = dbConnect(MySQL(), 
                  user='your  user', 
                  password='your  password', 
                  dbname='your DB name', 
                 host='Host Name')
#Eusuring the connection working by listing table
dbListTables(mydb)

#Applying update statement directly
rs = dbSendQuery(mydb, "UPDATE DB_NAME.TABLE_1 
SET    FIELD_1 = 0 
                 WHERE  ID = 5")

#Verifying the result
rs = dbSendQuery(mydb, "SELECT * FROM DB_NAME.TABLE_1
                 WHERE  ID = 5")
data = fetch(rs, n=-1)
print(data)

我在R Studio版本1.1.453和R 3.5.0(64位)中尝试了上述代码。

将数据帧写入数据库中的临时表。从临时表更新主表。删除临时表。