2017-02-14 54 views
2

我想使用R/dplyr来更改SQLite表的名称。如何用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, [email protected], 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?对于我的申请,我更喜欢前者。

预先感谢任何指针。

回答

2

使用DBI可以使用DBI:::dbSendQuery(db$con, sql(q))。通过使用db$con,您不需要打开另一个连接。