Metz, Thomas (IRRI)
2007-Dec-14 03:45 UTC
[R] RJDBC to OpenOffice Calc as RODBC to MS Excel
Under Windows, I have used RODBC to connect to Excel spreadsheets as per
the example below:
library(RODBC);
connect = odbcConnectExcel("testdata.xls");
query = "SELECT [data$.ethn], [data$.sex], [data$.age],
[data$.height], [data$.weight],
[label$.label]
FROM [data$], [label$]
WHERE [data$.ethn] = [label$.ethn];"
data = sqlQuery(connect, query);
odbcClose(connect);
[data$] and [label$] are two named sheets in the Excel spreadsheet
testdata.xls. [.ethn], [.sex], [.age], [.height], [.weight], and
[.label] are cloumn names that appear in the first row in the sheets. I
can also have UNION queries that allow me to overcome the spreadsheet
row limitation of a single sheet. The idea is to allow normalization of
data in a spreadsheet and leveraging the power of SQL, without using a
database.
Can the same be done under Windows (Linux?) with OpenOffice Calc using
RJDBC? Are there ODBC drivers for OpenOffice Calc?
I know that the right solution would be to use a database, but this is
outside the comfort zone of many users who rely mainly on spreadsheets
to collect, manipulate and analyze their data.
Thomas Metz
International Rice Research Institute
Philippines
On Fri, 14 Dec 2007, Metz, Thomas (IRRI) wrote:> Under Windows, I have used RODBC to connect to Excel spreadsheets as per > the example below: > > library(RODBC); > connect = odbcConnectExcel("testdata.xls"); > query = "SELECT [data$.ethn], [data$.sex], [data$.age], > [data$.height], [data$.weight], > [label$.label] > FROM [data$], [label$] > WHERE [data$.ethn] = [label$.ethn];" > data = sqlQuery(connect, query); > odbcClose(connect); > > [data$] and [label$] are two named sheets in the Excel spreadsheet > testdata.xls. [.ethn], [.sex], [.age], [.height], [.weight], and > [.label] are cloumn names that appear in the first row in the sheets. I > can also have UNION queries that allow me to overcome the spreadsheet > row limitation of a single sheet. The idea is to allow normalization of > data in a spreadsheet and leveraging the power of SQL, without using a > database. > > Can the same be done under Windows (Linux?) with OpenOffice Calc using > RJDBC? Are there ODBC drivers for OpenOffice Calc?An awful lot of that is Microsoft warts on SQL, so it will not be portable. But in a more standard syntax (drop the [] and $) it should be doable over any connection that supports SQL queries. The question is whether OO calc has suitable drivers as an ODBC/JDBC server. Not a question for this list! (I suspect the answer is no: Microsoft's drivers effectively use the Access engine to work with spreadsheet files and even plain text. I don't even see drivers for OO base.)> I know that the right solution would be to use a database, but this is > outside the comfort zone of many users who rely mainly on spreadsheets > to collect, manipulate and analyze their data. > > Thomas Metz > International Rice Research Institute > Philippines-- 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