The sql_
generics are used to build the different types of SQL queries.
The default implementations in dbplyr generates ANSI 92 compliant SQL.
The db_
generics execute actions on the database. The default
implementations in dbplyr typically just call the standard DBI S4
method.
Usage
db_desc(x)
sql_translate_env(con)
db_list_tables(con)
db_has_table(con, table)
db_data_type(con, fields)
db_save_query(con, sql, name, temporary = TRUE, ...)
db_begin(con, ...)
db_commit(con, ...)
db_rollback(con, ...)
db_write_table(con, table, types, values, temporary = FALSE, ...)
db_create_table(con, table, types, temporary = FALSE, ...)
db_insert_into(con, table, values, ...)
db_create_indexes(con, table, indexes = NULL, unique = FALSE, ...)
db_create_index(con, table, columns, name = NULL, unique = FALSE, ...)
db_drop_table(con, table, force = FALSE, ...)
db_analyze(con, table, ...)
db_explain(con, sql, ...)
db_query_fields(con, sql, ...)
db_query_rows(con, sql, ...)
sql_select(
con,
select,
from,
where = NULL,
group_by = NULL,
having = NULL,
order_by = NULL,
limit = NULL,
distinct = FALSE,
...
)
sql_subquery(con, from, name = random_table_name(), ...)
sql_join(con, x, y, vars, type = "inner", by = NULL, ...)
sql_semi_join(con, x, y, anti = FALSE, by = NULL, ...)
sql_set_op(con, x, y, method)
sql_escape_string(con, x)
sql_escape_ident(con, x)
Value
Usually a logical value indicating success. Most failures should generate
an error. However, db_has_table()
should return NA
if
temporary tables cannot be listed with DBI::dbListTables()
(due to backend
API limitations for example). As a result, you methods will rely on the
backend to throw an error if a table exists when it shouldn't.
Details
A few backend methods do not call the standard DBI S4 methods including
db_data_type()
: CallsDBI::dbDataType()
for every field (e.g. data frame column) and returns a vector of corresponding SQL data typesdb_save_query()
: Builds and executes aCREATE [TEMPORARY] TABLE <table> ...
SQL command.db_create_index()
: Builds and executes aCREATE INDEX <name> ON <table>
SQL command.db_drop_table()
: Builds and executes aDROP TABLE [IF EXISTS] <table>
SQL command.db_analyze()
: Builds and executes anANALYZE <table>
SQL command.
Currently, copy_to()
is the only user of db_begin()
, db_commit()
,
db_rollback()
, db_write_table()
, db_create_indexes()
, db_drop_table()
and
db_analyze()
. If you find yourself overriding many of these
functions it may suggest that you should just override copy_to()
instead.
db_create_table()
and db_insert_into()
have been deprecated
in favour of db_write_table()
.