dbflobr
reads and writes files to SQLite databases as
flobs. A flob is a
blob that preserves the file
extension.
To install the latest release from CRAN
install.packages("dbflobr")
To install the developmental version from GitHub
# install.packages("remotes")
remotes::install_github("poissonconsulting/dbflobr")
library(dbflobr)
# convert a file to flob using flobr
flob <- flobr::flob(system.file("extdata", "flobr.pdf", package = "flobr"))
str(flob)
#> List of 1
#> $ /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library/flobr/extdata/flobr.pdf: raw [1:133851] 58 0a 00 00 ...
#> - attr(*, "class")= chr [1:2] "flob" "blob"
# create a SQLite database connection
conn <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
# create a table 'Table1' of data
DBI::dbWriteTable(conn, "Table1", data.frame(IntColumn = c(1L, 2L)))
DBI::dbReadTable(conn, "Table1")
#> IntColumn
#> 1 1
#> 2 2
# specify which row to add the flob to by providing a key
key <- data.frame(IntColumn = 2L)
# write the flob to the database in column 'BlobColumn'
write_flob(flob, "BlobColumn", "Table1", key, conn, exists = FALSE)
DBI::dbReadTable(conn, "Table1")
#> IntColumn BlobColumn
#> 1 1 <NA>
#> 2 2 blob[133.85 kB]
# read the flob
flob2 <- read_flob("BlobColumn", "Table1", key, conn)
str(flob2)
#> List of 1
#> $ BlobColumn: raw [1:133851] 58 0a 00 00 ...
#> - attr(*, "class")= chr [1:2] "flob" "blob"
# delete the flob
delete_flob("BlobColumn", "Table1", key, conn)
DBI::dbReadTable(conn, "Table1")
#> IntColumn BlobColumn
#> 1 1 <NA>
#> 2 2 <NA>
# close the connection
DBI::dbDisconnect(conn)
Please report any issues.
Pull requests are always welcome.
Please note that the dbflobr project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms