2017-02-14 55 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,您不需要打開另一個連接。