我想使用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打开另一个连接?对于我的申请,我更喜欢前者。
提前感谢任何指示。
答案 0 :(得分:2)
要使用DBI
执行此操作,您可以使用DBI:::dbSendQuery(db$con, sql(q))
。使用db$con
,您无需打开另一个连接。