The default dbCreateTable() method calls sqlCreateTable() and dbExecute(). Backends compliant to ANSI SQL 99 don't need to override it. Backends with a different SQL syntax can override sqlCreateTable(), backends with entirely different ways to create tables need to override this method.

dbCreateTable(conn, name, fields, ..., row.names = NULL, temporary = FALSE)



A DBIConnection object, as returned by dbConnect().


Name of the table, escaped with dbQuoteIdentifier().


Either a character vector or a data frame.

A named character vector: Names are column names, values are types. Names are escaped with dbQuoteIdentifier(). Field types are unescaped.

A data frame: field types are generated using dbDataType().


Other arguments used by individual methods.


Must be NULL.


If TRUE, will generate a temporary table statement.


The row.names argument is not supported by this method. Process the values with sqlRownamesToColumn() before calling this method.

The argument order is different from the sqlCreateTable() method, the latter will be adapted in a later release of DBI.

See also


con <- dbConnect(RSQLite::SQLite(), ":memory:") dbCreateTable(con, "iris", iris) dbReadTable(con, "iris")
#> [1] Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <0 rows> (or 0-length row.names)