Skip to contents

Creates a physical table in a database from a `dbplyr`/`DBI`-backed lazy table or query. The function supports both **overwrite** and **append** write strategies, automatically creates the target database and schema if they do not exist, and adds audit fields (`upload_date`, `upload_time`) to the written table.

Usage

create_table_dbi(
  .data,
  .con,
  database_name,
  schema_name,
  table_name,
  write_type = "overwrite"
)

Arguments

.data

A `dbplyr` lazy table or other DBI-compatible object to be materialized as a physical table.

.con

A valid `DBI` connection.

database_name

Name of the database to create/use. If missing, the current database of the connection will be used.

schema_name

Name of the schema to create/use. If missing, the current schema of the connection will be used.

table_name

Name of the table to create or append to.

write_type

Write strategy: either `"overwrite"` (drop/create) or `"append"` (insert rows). Defaults to `"overwrite"`.

Value

A user-friendly message is returned invisibly (invisible `NULL`), indicating whether the table was created or appended to. Side effect: writes data to the database.

Details

- If the connection is a MotherDuck connection (detected by `validate_md_connection_status()`), the function ensures the database is created and switches to it before creating the schema. - Adds two audit columns: `upload_date` (date of run) and `upload_time` (time and timezone of run). - Uses `DBI::Id()` to explicitly target the database/schema/table. - `write_type = "overwrite"` will drop and recreate the table. - `write_type = "append"` will insert rows into an existing table.

See also

[DBI::dbExecute()], [dbplyr::remote_query()]