[R-sig-DB] RSQLite 1.0.0
Hadley Wickham
h@w|ckh@m @end|ng |rom gm@||@com
Sat Oct 25 19:15:42 CEST 2014
I'm very pleased to announce a new version of RSQLite 1.0.0. RSQLite is
*the* easiest way to use SQL database from R:
library(DBI)
# Create an ephemeral in-memory RSQLite database
con <- dbConnect(RSQLite::SQLite(), ":memory:")
# Copy in the buit-in mtcars data frame
dbWriteTable(con, "mtcars", mtcars, row.names = FALSE)
#> [1] TRUE
# Fetch all results from a query:
res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4
AND mpg < 23")
dbFetch(res)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> 1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#> 2 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
#> 3 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
#> 4 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
dbClearResult(res)
#> [1] TRUE
# Or fetch them a chunk at a time
res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
while(!dbHasCompleted(res)){
chunk <- dbFetch(res, n = 10)
print(nrow(chunk))
}
#> [1] 10
#> [1] 1
dbClearResult(res)
#> [1] TRUE
# Good practice to disconnect from the database when you're done
dbDisconnect(con)
#> [1] TRUE
RSQLite 1.0.0 is mostly a cleanup release. This means a lot of old
functions have been deprecated and removed:
- `idIsValid()` is deprecated; use `dbIsValid()` instead.
`dbBeginTransaction()` is deprecated; use `dbBegin()` instead. Use
`dbFetch()` instead of `fetch()`.
- `dbBuildTableDefinition()` is now `sqliteBuildTableDefinition()` (to
avoid implying that it's a DBI generic).
- Internal `sqlite*()` functions are no longer exported (\#20).
`safe.write()` is no longer exported.
It also includes a few minor improvements and bug fixes. The most
important are:
- Inlined `RSQLite.extfuns` - use `initExtension()` to load the many
useful extension functions.
- Methods no longer automatically clone the connection is there is an
open result set. This was implemented inconsistently in a handful of
places. RSQLite is now more forgiving if you forget to close a
result set - it will close it for you, with a warning. It's still
good practice to clean up after yourself with `dbClearResults()`,
but you don't have to.
- `dbBegin()`, `dbCommit()` and `dbRollback()` throw errors on
failure, rather than returning `FALSE`. They all gain a `name`
argument to specify named savepoints.
- `dbWriteTable()` has been rewritten. It uses a better quoting
strategy, throws errors on failure, and only automatically adds row
names only if they're strings. (NB: `dbWriteTable()` also has a
method that allows you load files directly from disk.)
For a complete list of changes, please see the full release
notes: https://github.com/rstats-db/RSQLite/releases/tag/v1.0.0.
Hadley
--
http://had.co.nz/
More information about the R-sig-DB
mailing list