sqlQuery(channel, query, errors = TRUE, ..., rows_at_time = 1)sqlGetResults(channel, as.is = FALSE, errors = FALSE,
max = 0, buffsize = 1000,
nullstring = NA, na.strings = "NA",
believeNRows = TRUE, dec = getOption("dec"))
odbcConnect.sqlGetResults.read.table? See the details.max = 0 and believeNRows == FALSE for the driver.SQL_NULL_DATA
character items from the database.NA when reading character
data.errors = TRUE, a character vector of error message(s),
otherwise error code -1 (general, call
odbcGetErrMsg for details) or -2 (no data, which
may not be an error as some SQL commands do return no data).sqlQuery is the workhorse function of RODBC. It sends the SQL
statement query to the server, using connection channel
returned by odbcConnect, and retrieves (some or all of)
the results via sqlGetResults. SQL beginners should note that the term 'Query' includes
any valid SQL statement including table creation, alteration, updates
etc as well as SELECTs. The sqlQuery command is a convenience
wrapper that calls first odbcQuery and then
sqlGetResults. If finer-grained control is needed, for example
over the number of rows fetched, these functions should be called
directly or additional arguments passed to sqlQuery.
sqlGetResults is a mid-level function. It should be called
after a call to sqlQuery or odbcQuery and used to
retrieve waiting results into a data frame. Its main use is with
max set to non-zero when it will retrieve the result set in
batches with repeated calls. This is useful for very large result sets
which can be subjected to intermediate processing.
Where possible sqlGetResults transfers data directly: this
happens for double, real, integer and
smallint columns in the table. All other SQL data types are
converted to character strings by the ODBC interface. If the
as.is is true for a column, it is returned as character.
Otherwise (where detected) date, datetime and
timestamp values are converted to "Date" and
"POSIXct" values respectively. (Some drivers seem to confuse times
with dates, so times may get converted too.) Other types are
converted by Rusing type.convert. When
character data are to be converted to numeric data, the setting of
options("dec") to map the character used up the ODBC driver in
setting decimal points---this is set to a locale-specific value
when RODBC is initialized if it is not already set.
Using buffsize will yield a marginal increase in speed if set
to no less than the maximum number of rows when believeNRows =
FALSE. (If set too small it can result in unnecessarily high
memory use as the buffers will need to be expanded.)
Modern drivers should work (and work faster, especially if
communicating with a remote machine) with rows_a_time = 1024.
However, some drivers may mis-fetch multiple rows, so set this to
1 if the results are incorrect.
odbcConnect, sqlFetch,
sqlSave, sqlTables, odbcQuerychannel <- odbcConnect("test")
sqlSave(channel, USArrests, rownames = "State", verbose = TRUE)
# options(dec=".") # optional, if DBMS is not locale-aware
## note case of State, Murder, rape are DBMS-dependent.
sqlQuery(channel, paste("select State, Murder from USArrests",
"where Rape > 30 order by Murder"))
close(channel)Run the code above in your browser using DataLab