R: Return the corresponding ODBC data type for an R object

odbcDataType {odbc} | R Documentation

## Return the corresponding ODBC data type for an R object

### Description

This is used when creating a new table with `dbWriteTable()`. Databases with default methods defined are

- MySQL

- PostgreSQL

- SQL Server

- Oracle

- SQLite

- Spark

- Hive

- Impala

- Redshift

- Vertica

- BigQuery

- Teradata

- Access

### Usage

    odbcDataType(con, obj, ...)

### Arguments

`con` | A driver connection object, as returned by `dbConnect()`.
`obj` | An R object.
`...` | Additional arguments passed to methods.

### Details

If you are using a different database and `dbWriteTable()` fails with a SQL parsing error the default method is not appropriate, you will need to write a new method.

### Value

Corresponding SQL type for the `obj`.

### Defining a new dbDataType method

The object type for your connection will be the database name retrieved by `dbGetInfo(con)$dbms.name`. Use the documentation provided with your database to determine appropriate values for each R data type. An example method definition of a fictional `foo` database follows.

    con <- dbConnect(odbc::odbc(), "FooConnection")
    dbGetInfo(con)$dbms.name
    #> [1] "foo"

    `odbcDataType.foo <- function(con, obj, ...) {
      switch_type(obj,
        factor = "VARCHAR(255)",
        datetime = "TIMESTAMP",
        date = "DATE",
        binary = "BINARY",
        integer = "INTEGER",
        double = "DOUBLE",
        character = "VARCHAR(255)",
        logical = "BIT",
        list = "VARCHAR(255)",
        stop("Unsupported type", call. = FALSE)
      )
    }

[Package odbc version 1.3.2 Index]