[R-sig-DB] Saving R-objects to a database
sdavis2 at mail.nih.gov
Wed Oct 1 13:16:59 CEST 2008
On Wed, Oct 1, 2008 at 6:42 AM, Christian Ruckert
<cruckert at uni-muenster.de> wrote:
>>> Someone solved the problem of saving R-objects to a database or can give
>>> an answer like "this is not possible at the moment"?
>>> All my attempts runned into problems with conversion between blob, raw
>>> character representations. Saving the R-object to a file and then getting
>>> into the db leads to similar problems. Is saving to the file system the
>>> practicable solution?
>> Look at the serialize function. You can serialize any R object which
>> can be stored into the database of your choice. Give that a try and
>> let us know with a code example if you have problems.
> This is what I posted on r-mailing list before:
>> ser = serialize(obj, NULL)
>> dbSendQuery(link, paste("insert into table values(1, '",ser,"')",sep=''))
>> The field to save the object in the MySQL Database is of type blob.
>> result = dbGetQuery(link,"select * from table where id=1")
>> unser = unserialize(result[1,"object_column"], NULL)
>> Error in unserialize(result[1, "object_column"], NULL) : unknown input
>> In addition: Warning message:
>> In unserialize(result[1, "object_column"], NULL) :
>> unserialize()from a character string is deprecated and will be withdrawn
>> in R 2.8.0
> Brian Ripley answered:
> "DBI needs to convert blobs to raw not character."
> So saving to the db works fine, but function dbGetQuery seems to convert the
> result to a character string. Can I avoid this convertion or is this a
> problem with DBI package and will it get fixed?
What happens if you serialize using "ascii=TRUE"? Then, you could
probably save into a text field. Admittedly, I haven't tried this.
More information about the R-sig-DB