[R] Creating a .txt file from an Oracle DB without creating an R object

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Apr 19 18:14:46 CEST 2006


On Wed, 19 Apr 2006, Marc Schwartz (via MN) wrote:

> On Wed, 2006-04-19 at 17:02 +0200, Paul wrote:
>> Dear R-helpers,
>>
>>     I am dealing with an Oracle database (using package RODBC). I use
>> R in order to transform some Oracle tables into .txt files (using
>> function sqlFetch from package RODBC and then function write.table).
>> However, I cannot do it without creating an R object, which is rather
>> restrictive for very big Oracle tables. Indeed, any R Object is stored
>> into RAM, which can be of limited size.
>>     Do you know if it is possible to directly create a .txt file,
>> without creating an R object ?
>>     Thank you in advance.
>>
>>   P. Poncet
>>
>
> Somebody else may have a better idea, but you could probably use either
> sink() or capture.output() to send the data to a text file instead of
> the console, thus not creating an R object. For example:
>
>  capture.output(sqlFetch(channel, "YourTableName", colnames = TRUE),
>                 "OutputFile.txt")
>
> You will need to adjust options("width"), which defaults to 80 and would
> cause the typical in-console line wrapping to occur. You would not want
> this in your text file of course.  'width' can be set up to 10,000 by
> default and could go higher, if you want to adjust the value in print.h
> and re-compile R.

I don't think this helps: sqlFetch will create an (unnamed) R object 
containing the whole table and hence have the memory issues.  What you can 
do is use is a limit on the number of rows and use sqlFetchMore in a loop.

> See ?options, ?sink and ?capture.output for more information.
>
> Another reasonable question might be, if you are just taking data from
> an Oracle table and pumping it into a text file, you could do this in
> other ways outside of R, including using the Oracle SQL*Plus Instant
> Client (ie. via the SPOOL command).

And if you have an Oracle ODBC driver there are a whole host of ODBC 
clients to do this (on Unix you could just use isql in batch mode).

> Finally, there is an R e-mail list focused on databases:
>
>  https://stat.ethz.ch/mailman/listinfo/r-sig-db
>
> HTH,
>
> Marc Schwartz
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

-- 
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




More information about the R-help mailing list