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.

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.

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
>

______________________________________________
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