如何用dplyr重命名SQLite表?

时间:2017-02-14 19:59:04

标签: r sqlite dplyr

我想使用R / dplyr更改SQLite表的名称。

documentation看起来(乍一看)它应该只是:

db <- src_sqlite("db/path.sqlite", create = TRUE)
mtcars %>% add_rownames() %>% rename(car = rowname) -> mtcars2
copy_to(db, mtcars2, indexes = list("car"))
q <- "ALTER TABLE mtcars2 RENAME TO mtcars3"
tbl(db, sql(q))

但是,这会产生错误。我想也许是缺少的分号,但在任何一种情况下我都会得到同样的错误。

 Error in sqliteSendQuery(conn, statement) (from #4) : 
  error in statement: near "ALTER": syntax error

追溯的顶部显示:

21: .Call(rsqlite_query_send, con@Id, as.character(statement), bind.data)
20: sqliteSendQuery(conn, statement)
19: .local(conn, statement, ...)
18: DBI::dbSendQuery(con, build_sql("SELECT * FROM ", sql))
17: DBI::dbSendQuery(con, build_sql("SELECT * FROM ", sql))

有没有办法根据src_sqlite生成的连接更改表名,还是必须关闭此连接并直接使用RSQLite / DBI打开另一个连接?对于我的申请,我更喜欢前者。

提前感谢任何指示。

1 个答案:

答案 0 :(得分:2)

要使用DBI执行此操作,您可以使用DBI:::dbSendQuery(db$con, sql(q))。使用db$con,您无需打开另一个连接。