2017-02-14 9 views
2

Я хочу изменить имя таблицы SQLite с помощью R/dplyr.Как переименовать таблицу SQLite с dplyr?

С 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 

В верхней части TRACEBACK показывает:

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, вам не нужно открывать другое соединение.