[R] write.csv +RMySQL request

Jeffrey Horner jeff.horner at vanderbilt.edu
Fri Feb 29 17:03:58 CET 2008


Tristan Casey wrote on 02/29/2008 03:37 AM:
> Well that is certainly good news if write.csv output can be stored directly to a character vector!
> 
> I have tried to specify a vector within the file="" argument for example;
> 
> write.csv(a,file="b") where b is a preexisting character vector
> 
> This does not work. Do I need to define b as something else, like a textConnection? 

Well, I was just curious myself, so I tested this and the following R 
code works and presumes you have DBI and RSQLite installed (mind the 
line wrap):

library(datasets)
library(RSQLite)

# Temp file for sqlite database
tfile <- tempfile()

# Connection to sqlite database
con <- dbConnect(dbDriver("SQLite"), dbname = tfile)

# Create a table to hold ASCII serialized R data frames
dbSendQuery(con,'create table frames ("name" varchar(255), "value" text 
default NULL)')

# Serialize the iris data frame to a length 1 character vector
Siris <- rawToChar(serialize(iris,NULL,ascii=TRUE))

# Now insert it into the database
dbSendQuery(con,paste("insert into frames values 
('",'iris',"','",Siris,"')",sep=''))

# Assign the unserialized data frame to DBiris
DBiris <- unserialize(dbGetQuery(con,"select value from frames where 
name='iris'")[1,'value'])

# To idio?
all(DBiris == iris)

dbDisconnect(con)
file.remove(tfile)
rm(list=c('tfile','con','Siris','DBiris'))

Best,

Jeff

> 
>> Date: Fri, 29 Feb 2008 09:16:11 +0000
>> From: ripley at stats.ox.ac.uk
>> To: nub_vulcanis at hotmail.com
>> CC: jholtman at gmail.com; r-help at r-project.org
>> Subject: RE: [R] write.csv +RMySQL request
>>
>> On Fri, 29 Feb 2008, Tristan Casey wrote:
>>
>>> Ahh, my apologies I must admit that I don't fully understand 
>>> textConnections fully. I have been reading up on th RODBC package as an 
>>> alternative to RMySQL.
>>>
>>> With the file argument in write.csv, are you saying it is possible to 
>>> write the csv formated data directly to a cell in a MySQL database? I am 
>>> unsure what the variable 'con' must consist of.
>> No, that it is possible to write it to an R character vector.
>>
>>> Would this need to be a character string that initially connects to the 
>>> database (dbConnect) then pastes the MySQL query? I am unsure how to 
>>> specify where the data is going with the file/connection argument.
>>>
>>> Thanks
>>>
>>>
>>>> Date: Fri, 29 Feb 2008 08:44:58 +0000
>>>> From: ripley at stats.ox.ac.uk
>>>> To: nub_vulcanis at hotmail.com
>>>> CC: jholtman at gmail.com; r-help at r-project.org
>>>> Subject: RE: [R] write.csv +RMySQL request
>>>>
>>>> On Fri, 29 Feb 2008, Tristan Casey wrote:
>>>>
>>>>> Thanks again for your help.
>>>>>
>>>>> I am wanting my variable to store a character string exactly as the write.csv function would store as a csv text file;
>>>>>
>>>>> IE: My goal is to store a data frame of this construction;
>>>>>
>>>>> x1 x2
>>>>> 1  2
>>>>> 3 4
>>>>>
>>>>> as "X1","X2",1,2,3,4 (the same format as CSV).
>>>>>
>>>>> I am aware of the file argument, however that is the problem, storing to
>>>>> a physical text file and then importing into the SQL database is a very
>>>>> inefficient way of doing things, especially when I can use RMySQL to
>>>>> send commands directly to the database.
>>>> You seem however unaware of text connections.  Neither of us said anything
>>>> about using a 'physical text file', and the documentation for
>>>> write.csv says
>>>>
>>>>      file: either a character string naming a file or a connection open
>>>>            for writing.  '""' indicates output to the console.
>>>>
>>>> A 'text connection; is not a file (physical or otherwise).
>>>>
>>>>
>>>>> Kind Regards,
>>>>>
>>>>> Tristan Casey BPsySci (UQ)
>>>>> + 4 Festa Court, Capalaba, QLD 4157
>>>>> H 8/33 Lilly St, Greenslopes, QLD 4120
>>>>> 0450 033 948
>>>>>
>>>>>
>>>>>
>>>>>> Date: Fri, 29 Feb 2008 05:12:04 +0000
>>>>>> From: ripley at stats.ox.ac.uk
>>>>>> To: jholtman at gmail.com
>>>>>> CC: nub_vulcanis at hotmail.com; r-help at r-project.org
>>>>>> Subject: Re: [R] write.csv +RMySQL request
>>>>>>
>>>>>> On Thu, 28 Feb 2008, jim holtman wrote:
>>>>>>
>>>>>>> ?capture.output
>>>>>>>
>>>>>>> myoutput <- capture.output(write.csv(...))
>>>>>> It would be better to write directly to a text connection: see the 'file'
>>>>>> argument to write.csv.
>>>>>>
>>>>>>> On Thu, Feb 28, 2008 at 7:34 PM, Tristan Casey <nub_vulcanis at hotmail.com> wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I am relatively new to R and learning its ins and outs. As part of a website I am building, I need to read and write csv files directly from an SQL database. Basically I want to convert R variables (dataframes) into CSV format, store them as another R variable (as a properly formatted text string suitable for csv reading) and then send this to one row in a database.
>>>>>>>>
>>>>>>>> The SQL part is fine, the problem arises because I cannot capture the output of write.csv! It posts to the terminal when file="" is used, however I also want to store it. Does anyone have any ideas?
>>>>>>>>
>>>>>>>> Thanks in advance!
>>>>>> --
>>>>>> Brian D. Ripley,                  ripley at stats.ox.ac.uk
>>>>>> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>>>>>> University of Oxford,             Tel:  +44 1865 272861 (self)
>>>>>> 1 South Parks Road,                     +44 1865 272866 (PA)
>>>>>> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>>>>> _________________________________________________________________
>>>>> Your Future Starts Here. Dream it? Then be it! Find it at www.seek.com.au
>>>>> http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fninemsn%2Eseek%2Ecom%2Eau%2F%3Ftracking%3Dsk%3Ahet%3Ask%3Anine%3A0%3Ahot%3Atext&_t=764565661&_r=OCT07_endtext_Future&_m=EXT
>>>> --
>>>> Brian D. Ripley,                  ripley at stats.ox.ac.uk
>>>> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>>>> University of Oxford,             Tel:  +44 1865 272861 (self)
>>>> 1 South Parks Road,                     +44 1865 272866 (PA)
>>>> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>>> _________________________________________________________________
>>> Your Future Starts Here. Dream it? Then be it! Find it at www.seek.com.au
>>> http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fninemsn%2Eseek%2Ecom%2Eau%2F%3Ftracking%3Dsk%3Ahet%3Ask%3Anine%3A0%3Ahot%3Atext&_t=764565661&_r=OCT07_endtext_Future&_m=EXT
>> -- 
>> Brian D. Ripley,                  ripley at stats.ox.ac.uk
>> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>> University of Oxford,             Tel:  +44 1865 272861 (self)
>> 1 South Parks Road,                     +44 1865 272866 (PA)
>> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
> 
> _________________________________________________________________
> Your Future Starts Here. Dream it? Then be it! Find it at www.seek.com.au
> 
> %2F%3Ftracking%3Dsk%3Ahet%3Ask%3Anine%3A0%3Ahot%3Atext&_t=764565661&_r=OCT07_endtext_Future&_m=EXT
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.


-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner



More information about the R-help mailing list