I am wondering if R does not support using sqldf to delete rows from a data table. My data looks like this
我正在尝试使用删除语句从数据表中删除。没有底层数据库,只有一个 data.table。但是我输入了以下sql语句:
loans_good <- sqldf("Delete from LoansDT1 where status not in ('Current','Default')")
我收到以下错误消息:
'SQL statements must be issued with dbExecute() or dbSendStatement() instead of dbGetQuery() or dbSendQuery().'
由于我收到相同的更新消息,我想知道这是否是一个限制。
这个问题是一个常见问题解答。请参阅常见问题解答 8sqldf github 主页.
手术确实有效。该消息是警告消息,而不是错误消息。该消息具有误导性,您可以忽略它。请注意,该问题并未显示完整的消息——完整的消息确实表明它是一条警告消息。
警告消息来自 RSQLite,而不是来自 sqldf 本身。它是由 RSQLite 在某个时刻引入的非向后兼容的更改引起的;然而,如上所述,实际操作无论如何都是有效的。
Also delete
and update
对数据库中的表进行操作。它们不返回值,因此即使它们有效,您也不会看到任何结果。如果你想要一个结果,你必须使用select
后的声明delete
or update
检索修改后的表。
以下是使用内置 6 行 BOD 数据框的示例。它删除最后一行,因为该行的时间大于 5。
library(sqldf)
sqldf(c("delete from BOD where Time > 5", "select * from BOD"))
## Time demand
## 1 1 8.3
## 2 2 10.3
## 3 3 19.0
## 4 4 16.0
## 5 5 15.6
## Warning message:
## In result_fetch(res@ptr, n = n) :
## SQL statements must be issued with dbExecute() or dbSendStatement() instead of dbGetQuery() or dbSendQuery().
请注意,这在 sqldf issues 中列出,其中提供了该消息的解决方法:https://github.com/ggrothendieck/sqldf/issues/40
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)