【发布时间】:2016-01-30 09:22:19
【问题描述】:
有谁知道我如何使用RMySQL(或其他库)来更新表中的一行,而不必拉出整个表并将其推回?我不想为了更新一行而将这么大的表读入内存。
我要做的是拉出一行,更改 R 中的一些值,然后将相同的行对象推回表中。
但是,dbWriteTable 似乎替换了整个表,而不仅仅是我指定的行。
【问题讨论】:
有谁知道我如何使用RMySQL(或其他库)来更新表中的一行,而不必拉出整个表并将其推回?我不想为了更新一行而将这么大的表读入内存。
我要做的是拉出一行,更改 R 中的一些值,然后将相同的行对象推回表中。
但是,dbWriteTable 似乎替换了整个表,而不仅仅是我指定的行。
【问题讨论】:
最简单的方法是在 R 中构造一个包含足够 SQL Update 语句的字符串,然后使用 dbSendQuery 将数据推回表中。
【讨论】:
使用 sqldf 包:
library(sqldf)
table_name = data.frame(a = 1:10, b = 4)
# Open connection
sqldf()
fn$sqldf("update table_name set b=1")
ans = sqldf("select * from main.table_name")
# Close connection
sqldf()
print(table_name)
【讨论】:
fn$sqldf("update table_name set b=$var") 上面代码中 var = 1