我正在尝试使用RSQLite将表写入数据库:
library(RSQLite)
#Create SQL Database
dbfile <- "Testdb.db"
sqlite <- dbDriver("SQLite")
SQLiteChannel <- dbConnect(sqlite, dbfile)
这很好用:
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
但是,如果我在表名中添加前导数字:
dbWriteTable(SQLiteChannel,name = "2015_mtcars",value = mtcars)
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: unrecognized token: "2015_mtcars"
据我所知,sqlite的表名中允许使用前导数字,但文档中的所有示例都没有前导数字。
知道发生了什么,或者我如何使用dbWriteTable
以这种方式命名我的表?
注意:在运行此代码之前,数据库和表不存在,因此它应该是完全可重现的。
答案 0 :(得分:1)
以数字开头的表名称是非标准的,因此它们需要围绕它们的括号。
dbWriteTable(SQLiteChannel, name = "[2015_mtcars]",value = mtcars)
[1] TRUE