我正在尝试通过RODBC包连接到sqlite数据库。
1。)我已经从http://www.ch-werner.de/sqliteodbc/安装了SQLite ODBC驱动程序,并使用Windows 7中的ODBC数据源管理器进行设置。设置为锁定超时20毫秒,同步模式正常,以及“不创建数据库“检查。我可以在“用户DSN”选项卡中将我的数据源看作SQLite3 ODBC驱动程序。
2.。)在R中,我运行以下命令来连接数据库。到目前为止没问题。看起来它设置正确。
library(RODBC)
con <- odbcConnect("dbss")
odbcGetInfo(con)
DBMS_Name
"SQLite"
DBMS_Ver
"3.8.2"
Driver_ODBC_Ver
"03.00"
Data_Source_Name
"dbss"
Driver_Name
"sqlite3odbc.dll"
Driver_Ver
"0.996"
ODBC_Ver
"03.80.0000"
Server_Name
"U:\\Research\\data\\smartsystemtic\\db.sqlite"
3。)但是,如果我想查询一个表或只是显示表,我遇到了问题。我可以看到(使用SQLite Studio)我有一个名为“School”的表,有4列和3行。
> sqlQuery(con, paste("SELECT * FROM School"))
[1] SchID Location Authority SchSize
<0 rows> (or 0-length row.names)
我知道有三行正在查看SQLite Studio。
4。)我也得到
> sqlTables(con)
[1] TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
<0 rows> (or 0-length row.names)
在SQLite Studio中,我看到数据库有4个表。
你能否指点我做错了什么?谢谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
我已经能够使用RODBC包访问我的SQLite数据库了。我在db中的每个10个表中至少有540万行。我从你的(@ Wolfgang Wu)设置和代码中看到的主要区别是我使用的SQLite 3数据源驱动程序是在System DSN选项卡中访问的。我安装了从http://www.ch-werner.de/sqliteodbc/
链接的64位驱动程序以下是我的命令和结果。
################################################
# Create SQL tables from same-name r dataframes
################################################
db <- dbConnect(SQLite(), dbname = "./slds.sqlite")
# student record - stu, crs, dis, enr, prog, sped, addr
# assessments - crct, crctm, eoct
for (i in 1:dim(r)[1]) {
dbWriteTable(conn = db, name = paste0(r[i, 1]), value = get(r[i, 1]),
row.names = FALSE, overwrite = TRUE)
}
# FYI - the r matrix is as follows:
# > r
# [,1] [,2]
# [1,] "stu" "Student"
# [2,] "crs" "Course"
# [3,] "dis" "Discipline"
# [4,] "enr" "Enroll"
# [5,] "addr" "Address"
# [6,] "prog" "Programs"
# [7,] "sped" "Sp. Ed. Events"
# [8,] "crct" "CRCT(-M)"
# [9,] "crctm" "CRCT(-M)"
# [10,] "eoct" "EOCT"
################################
# Connect, access, show results
################################
slds <- odbcConnect("slds_dews", believeNRows = FALSE, rows_at_time = 1)
table_list<-sqlTables(slds)
table_list[, "TABLE_NAME"]
[1] "stu" "crs" "dis" "enr" "addr" "prog" "sped" "crct" "crctm"
"eoct"
odbcGetInfo(slds)
DBMS_Name
"SQLite"
DBMS_Ver
"3.8.7.4"
Driver_ODBC_Ver
"03.00"
Data_Source_Name
"slds_dews"
Driver_Name
"sqlite3odbc.dll"
Driver_Ver
"0.9991"
ODBC_Ver
"03.80.0000"
Server_Name
"H:\\slds.sqlite"