mardi 29 septembre 2015

Leading numbers in table name with dbWriteTable (RSQLite) causes error

I am trying to write a table to a database using RSQLite:

library(RSQLite)

#Create SQL Database
dbfile <- "Testdb.db"
sqlite <- dbDriver("SQLite")
SQLiteChannel <- dbConnect(sqlite, dbfile)

This works fine:

dbWriteTable(SQLiteChannel,name = "mtcars",value = mtcars)

> head(dbReadTable(SQLiteChannel,"mtcars"))
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

However, if I add leading numbers to the table name:

dbWriteTable(SQLiteChannel,name = "2015_mtcars",value = mtcars)

Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: unrecognized token: "2015_mtcars"

To my knowledge, leading numbers are allowed in table names for sqlite, but all the examples in documentation have no leading numbers.

Any idea what is going on, or how I can name my tables this way using dbWriteTable?

Note: The database and the tables did not exist before running this code, so it should be completely reproducable.

Aucun commentaire:

Enregistrer un commentaire