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")
::install_github("poissonconsulting/dbflobr") remotes
library(dbflobr)
# convert a file to flob using flobr
<- flobr::flob(system.file("extdata", "flobr.pdf", package = "flobr"))
flob str(flob)
#> List of 1
#> $ /Library/Frameworks/R.framework/Versions/4.1/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
<- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
conn
# create a table 'Table1' of data
::dbWriteTable(conn, "Table1", data.frame(IntColumn = c(1L, 2L)))
DBI
::dbReadTable(conn, "Table1")
DBI#> IntColumn
#> 1 1
#> 2 2
# specify which row to add the flob to by providing a key
<- data.frame(IntColumn = 2L)
key
# write the flob to the database in column 'BlobColumn'
write_flob(flob, "BlobColumn", "Table1", key, conn, exists = FALSE)
::dbReadTable(conn, "Table1")
DBI#> IntColumn BlobColumn
#> 1 1 <NA>
#> 2 2 blob[133.85 kB]
# read the flob
<- read_flob("BlobColumn", "Table1", key, conn)
flob2 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)
::dbReadTable(conn, "Table1")
DBI#> IntColumn BlobColumn
#> 1 1 <NA>
#> 2 2 <NA>
# close the connection
::dbDisconnect(conn) DBI
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