dbFetch {DBI} | R Documentation |
Fetch the next n
elements (rows) from the result set and return them
as a data.frame.
dbFetch(res, n = -1, ...) fetch(res, n = -1, ...)
res |
An object inheriting from DBIResult, created by
|
n |
maximum number of records to retrieve per fetch. Use |
... |
Other arguments passed on to methods. |
fetch()
is provided for compatibility with older DBI clients - for all
new code you are strongly encouraged to use dbFetch()
. The default
implementation for dbFetch()
calls fetch()
so that it is compatible with
existing code. Modern backends should implement for dbFetch()
only.
dbFetch()
always returns a data.frame
with as many rows as records were fetched and as many
columns as fields in the result set,
even if the result is a single value
or has one
or zero rows.
An attempt to fetch from a closed result set raises an error.
If the n
argument is not an atomic whole number
greater or equal to -1 or Inf, an error is raised,
but a subsequent call to dbFetch()
with proper n
argument succeeds.
Calling dbFetch()
on a result set from a data manipulation query
created by dbSendStatement()
can be fetched and return an empty data frame, with a warning.
Fetching multi-row queries with one
or more columns be default returns the entire result.
Multi-row queries can also be fetched progressively
by passing a whole number (integer
or numeric)
as the n
argument.
A value of Inf for the n
argument is supported
and also returns the full result.
If more rows than available are fetched, the result is returned in full
without warning.
If fewer rows than requested are returned, further fetches will
return a data frame with zero rows.
If zero rows are fetched, the columns of the data frame are still fully
typed.
Fetching fewer rows than available is permitted,
no warning is issued when clearing the result set.
A column named row_names
is treated like any other column.
The column types of the returned data frame depend on the data returned:
integer for integer values between -2^31 and 2^31 - 1
numeric for numbers with a fractional component
logical for Boolean values (some backends may return an integer)
character for text
lists of raw for blobs (with NULL
entries for SQL NULL values)
coercible using as.Date()
for dates
(also applies to the return value of the SQL function current_date
)
coercible using hms::as.hms()
for times
(also applies to the return value of the SQL function current_time
)
coercible using as.POSIXct()
for timestamps
(also applies to the return value of the SQL function current_timestamp
)
NA for SQL NULL
values
If dates and timestamps are supported by the backend, the following R types are used:
Date for dates
(also applies to the return value of the SQL function current_date
)
POSIXct for timestamps
(also applies to the return value of the SQL function current_timestamp
)
R has no built-in type with lossless support for the full range of 64-bit or larger integers. If 64-bit integers are returned from a query, the following rules apply:
Values are returned in a container with support for the full range of
valid 64-bit values (such as the integer64
class of the bit64
package)
Coercion to numeric always returns a number that is as close as possible to the true value
Loss of precision when converting to numeric gives a warning
Conversion to character always returns a lossless decimal representation of the data
Close the result set with dbClearResult()
as soon as you
finish retrieving the records you want.
Other DBIResult generics: DBIResult-class
,
dbBind
, dbClearResult
,
dbColumnInfo
, dbGetInfo
,
dbGetRowCount
,
dbGetRowsAffected
,
dbGetStatement
,
dbHasCompleted
, dbIsValid
,
dbQuoteIdentifier
,
dbQuoteString
con <- dbConnect(RSQLite::SQLite(), ":memory:") dbWriteTable(con, "mtcars", mtcars) # Fetch all results rs <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4") dbFetch(rs) dbClearResult(rs) # Fetch in chunks rs <- dbSendQuery(con, "SELECT * FROM mtcars") while (!dbHasCompleted(rs)) { chunk <- dbFetch(rs, 10) print(nrow(chunk)) } dbClearResult(rs) dbDisconnect(con)