On Fri, 2010-07-09 at 20:02 -0400, Erik Wright wrote:
> Hi Matt,
> 
> This works great, thanks!
> 
> At first I got an error message saying BLOB is not implemented in RSQLite.  
> When I updated to the latest version it worked.

SQLite began to support BLOBs from version 3.0.

> 
> Is there any reason the string needs to be stored as type BLOB?  It seems to 
> work the same when I swap "BLOB" with "TEXT" in the CREATE TABLE command.

SQLite has a dynamic-type system. That is, data types are associated
with values rather than with their container (column). This means that
most columns in a table can store more than just the type (or
'affinity') it is declared with. I think that's what happens when you
use TEXT rather than BLOB. If you use something like x'FFFFA9' to insert
data into a column with TEXT affinity, I believe it is stored as a BLOB
regardless.

-Matt

> Thanks again!,
> Erik
> 
> 
> 
> On Jul 9, 2010, at 3:21 PM, Matt Shotwell wrote:
> 
> > Erik, 
> > 
> > Can you store the data as a blob? For example:
> > 
> >> #create string, compress with gzip, convert to SQLite blob string
> >> string <- "gzip this string, store as blob in SQLite database"
> >> string.gz <- memCompress(string, type="gzip")
> >> string.sqlite <- paste("x'",paste(string.gz,collapse=""),"'",sep="")
> > 
> >> #create database and table with a BLOB column
> >> library(RSQLite)
> > Loading required package: DBI
> >> con <- dbConnect(dbDriver("SQLite"), "compress.sqlite")
> >> dbGetQuery(con, "CREATE TABLE Compress (id INTEGER, data BLOB);")
> > NULL
> > 
> >> #insert the string as a blob
> >> query <- paste("INSERT INTO Compress (id, data) VALUES (1, ", 
> > + string.sqlite, ");", sep="")
> >> dbGetQuery(con, query)
> > NULL
> > 
> >> #recover the blob, decompress, and convert back to a string
> >> result <- dbGetQuery(con, "SELECT data FROM Compress;")
> >> string.gz <- result[[1]][[1]]
> >> string <- memDecompress(string.gz, type="gzip")
> >> rawToChar(string)
> > [1] "gzip this string, store as blob in SQLite database"
> > 
> > 
> > -Matt
> > 
> > 
> > 
> > On Fri, 2010-07-09 at 12:51 -0400, Erik Wright wrote:
> >> Hello,
> >> 
> >> I would like to compress a long string (character vector), store the 
> >> compressed string in the text field of a SQLite database (using RSQLite), 
> >> and then load the text back into memory and decompress it back into the 
> >> the original string.  My character vector can be compressed considerably 
> >> using standard gzip/bzip2 compression.  In theory it should be much faster 
> >> for me to compress/decompress a long string than to write the whole string 
> >> to the hard drive and then read it back (not to mention the saved hard 
> >> drive space).
> >> 
> >> I have tried accomplishing this task using memCompress() and 
> >> memDecompress() without success.  It seems memCompress can only convert a 
> >> character vector to raw type which cannot be treated as a string.  Does 
> >> anyone have ideas on how I can go about doing this, especially using the 
> >> standard base packages?
> >> 
> >> Thanks!,
> >> Erik
> >> 
> >> 
> >>> sessionInfo()
> >> R version 2.11.0 (2010-04-22) 
> >> x86_64-apple-darwin9.8.0 
> >> 
> >> locale:
> >> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
> >> 
> >> attached base packages:
> >> [1] stats     graphics  grDevices utils     datasets  methods   base     
> >> 
> >> loaded via a namespace (and not attached):
> >> [1] tools_2.11.0
> >> 
> >> ______________________________________________
> >> R-help@r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide 
> >> http://www.R-project.org/posting-guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> > -- 
> > Matthew S. Shotwell
> > Graduate Student
> > Division of Biostatistics and Epidemiology
> > Medical University of South Carolina
> > http://biostatmatt.com
> > 
> 
-- 
Matthew S. Shotwell
Graduate Student
Division of Biostatistics and Epidemiology
Medical University of South Carolina
http://biostatmatt.com

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to