postgres-tables function

Convenience functions for reading/writing DBMS tables

Convenience functions for reading/writing DBMS tables

DBI::dbAppendTable() is overridden because RPostgres

uses placeholders of the form $1, $2 etc. instead of ?.

DBI::dbWriteTable() executes several SQL statements that create/overwrite a table and fill it with values. RPostgres does not use parameterised queries to insert rows because benchmarks revealed that this was considerably slower than using a single SQL string.

## S4 method for signature 'PqConnection' dbAppendTable(conn, name, value, copy = NULL, ..., row.names = NULL) ## S4 method for signature 'PqConnection,Id' dbExistsTable(conn, name, ...) ## S4 method for signature 'PqConnection,character' dbExistsTable(conn, name, ...) ## S4 method for signature 'PqConnection,Id' dbListFields(conn, name, ...) ## S4 method for signature 'PqConnection,character' dbListFields(conn, name, ...) ## S4 method for signature 'PqConnection' dbListObjects(conn, prefix = NULL, ...) ## S4 method for signature 'PqConnection' dbListTables(conn, ...) ## S4 method for signature 'PqConnection,character' dbReadTable(conn, name, ..., check.names = TRUE, row.names = FALSE) ## S4 method for signature 'PqConnection,character' dbRemoveTable(conn, name, ..., temporary = FALSE, fail_if_missing = TRUE) ## S4 method for signature 'PqConnection,character,data.frame' dbWriteTable( conn, name, value, ..., row.names = FALSE, overwrite = FALSE, append = FALSE, field.types = NULL, temporary = FALSE, copy = NULL ) ## S4 method for signature 'PqConnection' sqlData(con, value, row.names = FALSE, ...)

Arguments

  • conn: a PqConnection object, produced by DBI::dbConnect()

  • name: a character string specifying a table name. Names will be automatically quoted so you can use any sequence of characters, not just any valid bare table name. Alternatively, pass a name quoted with DBI::dbQuoteIdentifier(), an Id() object, or a string escaped with DBI::SQL().

  • value: A data.frame to write to the database.

  • copy: If TRUE, serializes the data frame to a single string and uses COPY name FROM stdin. This is fast, but not supported by all postgres servers (e.g. Amazon's Redshift). If FALSE, generates a single SQL string. This is slower, but always supported. The default maps to TRUE on connections established via Postgres()

    and to FALSE on connections established via Redshift().

  • ...: Ignored.

  • row.names: Either TRUE, FALSE, NA or a string.

    If TRUE, always translate row names to a column called "row_names". If FALSE, never translate row names. If NA, translate rownames only if they're a character vector.

    A string is equivalent to TRUE, but allows you to override the default name.

    For backward compatibility, NULL is equivalent to FALSE.

  • prefix: A fully qualified path in the database's namespace, or NULL. This argument will be processed with dbUnquoteIdentifier(). If given the method will return all objects accessible through this prefix.

  • check.names: If TRUE, the default, column names will be converted to valid R identifiers.

  • temporary: If TRUE, only temporary tables are considered.

  • fail_if_missing: If FALSE, dbRemoveTable() succeeds if the table doesn't exist.

  • overwrite: a logical specifying whether to overwrite an existing table or not. Its default is FALSE.

  • append: a logical specifying whether to append to an existing table in the DBMS. Its default is FALSE.

  • field.types: character vector of named SQL field types where the names are the names of new table's columns. If missing, types are inferred with DBI::dbDataType()). The types can only be specified with append = FALSE.

  • con: A database connection.

Schemas, catalogs, tablespaces

Pass an identifier created with Id() as the name argument to specify the schema or catalog, e.g. name = Id(catalog = "my_catalog", schema = "my_schema", table ="my_table") . To specify the tablespace, use dbExecute(conn, "SET default_tablespace TO my_tablespace")

before creating the table.

Examples

library(DBI) con <- dbConnect(RPostgres::Postgres()) dbListTables(con) dbWriteTable(con, "mtcars", mtcars, temporary = TRUE) dbReadTable(con, "mtcars") dbListTables(con) dbExistsTable(con, "mtcars") # A zero row data frame just creates a table definition. dbWriteTable(con, "mtcars2", mtcars[0, ], temporary = TRUE) dbReadTable(con, "mtcars2") dbDisconnect(con)
  • Maintainer: Kirill Müller
  • License: MIT + file LICENSE
  • Last published: 2025-02-25