R连接到sqlite

pqwbnv8z  于 2023-06-23  发布在  SQLite
关注(0)|答案(2)|浏览(157)

我无法从R连接到sqlite。Sqlite3安装在linux服务器上,我可以创建/修改。但R不连接:

library(dplyr)
library(RSQLite)

> db <- src_sqlite("my_db.sqlite3", create = TRUE)
Error in .local(drv, ...) : Could not connect to database:
unable to open database file

我可以从命令行连接到SQLite:

@ubuntu:~$ sqlite3
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

以下是会话信息:

> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.1 LTS

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RSQLite_1.0.0 DBI_0.3.1     dplyr_0.4.3  

loaded via a namespace (and not attached):
[1] magrittr_1.5   R6_2.1.1       assertthat_0.1 parallel_3.2.2 tools_3.2.2   
[6] Rcpp_0.12.1   
>
u4dcyp6a

u4dcyp6a1#

SQLite是一个文件级数据库,因此引用它需要一个完整的目录路径。不需要在文件名中指定工作目录或完整路径。
默认情况下,R将使用getwd()中包含的当前工作目录。如果数据库不包含在此文件夹中,则连接错误将出现。您可以使用setwd()更改工作目录。
顺便说一句,您引用了这两个包,但使用src_sqlitedplyr包连接到SQLite,而不是使用RSQLite。

RSQLite连接

library(RSQLite)

setwd("/Path/To/Database/Folder")
sqlite <- dbDriver("SQLite")
conn <- dbConnect(sqlite,"my_db.sqlite3")

DPLYR连接

library(dplyr)

setwd("/Path/To/Database/Folder")
db <- src_sqlite("my_db.sqlite3", create = TRUE)

您可能不想同时调用两个库以避免相同命名函数的冲突。

dkqlctbz

dkqlctbz2#

RSQLite's vignette所述:
RSQLite是一个与DBI兼容的接口,这意味着你主要使用DBI包中定义的函数,所以你应该总是从加载DBI开始,而不是RSQLite:

library(DBI)

在环境中加载DBI后,可以连接到现有数据库或创建新数据库:

dbh <- dbConnect(RSQLite::SQLite(), "mydb.sqlite")
dbDisconnect(dbh)
#> [1] TRUE
unlink("mydb.sqlite")

你可以在上面的RSQLite小插曲链接中找到更多的例子。我也有一些my blog的例子。我希望这对你有帮助!:)

相关问题