【问题标题】:RMySQL update row, not full tableRMySQL更新行,而不是全表
【发布时间】:2016-01-30 09:22:19
【问题描述】:

有谁知道我如何使用RMySQL(或其他库)来更新表中的一行,而不必拉出整个表并将其推回?我不想为了更新一行而将这么大的表读入内存。

我要做的是拉出一行,更改 R 中的一些值,然后将相同的行对象推回表中。

但是,dbWriteTable 似乎替换了整个表,而不仅仅是我指定的行。

【问题讨论】:

    标签: mysql r database rmysql


    【解决方案1】:

    最简单的方法是在 R 中构造一个包含足够 SQL Update 语句的字符串,然后使用 dbSendQuery 将数据推回表中。

    【讨论】:

      【解决方案2】:

      使用 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是什么对象?
      • 通常我们必须使用 fn$ 前缀来调用插值功能。即我们可以将 R 对象或变量传递到 sql 查询中。 fn$sqldf("update table_name set b=$var") 上面代码中 var = 1
      猜你喜欢
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多