在R中访问SQLite数据库

时间:2012-10-11 17:53:58

标签: database r sqlite

我想访问和操作R中的大型数据集。由于它是一个大型CSV文件(约0.5 GB),我打算将其导入
到SQLite,然后从R访问它。我知道sqldfRSQLite包可以做到这一点,但我去了 他们的手册并没有帮助。作为SQL的新手也无济于事。

我想知道我是否必须将R目录设置为SQLite,然后从那里开始?我如何读入R中的数据库呢? 哎呀,如果你知道如何在不使用SQL的情况下从R访问数据库,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:7)

这真的很容易 - sqlite db文件的路径和文件名作为'database'参数传递。这是CRANberries的确:

databasefile <- "/home/edd/cranberries/cranberries.sqlite"

## ...

## main worker function
dailyUpdate <- function() {
    stopifnot(all.equal(system("fping cran.r-project.org", intern=TRUE), 
                        "cran.r-project.org is alive"))
    setwd("/home/edd/cranberries")
    dbcon <- dbConnect(dbDriver("SQLite"), dbname = databasefile)
    repos <- dbGetQuery(dbcon, 
                        paste("select max(id) as id, desc, url ",
                              "from repos where desc!='omegahat' group by desc")
    # ...

这就是真的。当然,稍后会有其他疑问......

在从R尝试或直接从R尝试之前,您可以轻松地在sqlite客户端中测试所有SQL查询。

编辑 由于以上显然过于简洁,以下是文档中的示例:

con <- dbConnect(SQLite(), ":memory:")         ## in-memory, replace with file
data(USArrests)
dbWriteTable(con, "arrests", USArrests)

res <- dbSendQuery(con, "SELECT * from arrests")
data <- fetch(res, n = 2)
data

dbClearResult(res)
dbGetQuery(con, "SELECT * from arrests limit 3")