Я программно собираю кучу наборов данных, у многих из них есть глупые имена, которые начинаются с цифр и имеют в них специальные символы, такие как минусовые знаки. Поскольку ни один из наборов данных не является особенно большим, и я хотел, чтобы преимущество R делало все возможное для описания типов данных, я (ab), используя dplyr, чтобы сбрасывать эти таблицы в SQLite.
Я использую квадратные скобки, чтобы избежать ужасных имен таблиц, но это, похоже, не работает. Например:
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="[14m3-n4m3]")
В результате появляется сообщение об ошибке:
Error in sqliteSendQuery(conn, statement, bind.data) : error in statement: no such table: 14m3-n4m3
Это работает, если я выбираю разумное имя. Однако, по разным причинам, я действительно хотел бы сохранить громоздкие имена. Я также могу создать такую плохо названную таблицу непосредственно из sqlite:
sqlite> create table [14m3-n4m3](foo,bar,baz);
sqlite> .tables
14m3-n4m3
Не взламывая слишком глубоко, это выглядит так: dplyr обрабатывает квадратные скобки каким-то образом, что я не могу понять. Мое подозрение в том, что это ошибка, но я хотел сначала проверить здесь, чтобы убедиться, что я ничего не пропустил.
EDIT: Я забыл упомянуть случай, когда я просто передаю janky имя непосредственно dplyr. Это приводит к следующим ошибкам:
library(dplyr)
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="14M3-N4M3")
Error in sqliteSendQuery(conn, statement, bind.data) :
error in statement: unrecognized token: "14M3"