Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

make.db.names

Make R identifiers into legal SQL identifiers


Description

These methods are DEPRECATED. Please use dbQuoteIdentifier() (or possibly dbQuoteString()) instead.

Usage

make.db.names(
  dbObj,
  snames,
  keywords = .SQL92Keywords,
  unique = TRUE,
  allow.keywords = TRUE,
  ...
)

make.db.names.default(
  snames,
  keywords = .SQL92Keywords,
  unique = TRUE,
  allow.keywords = TRUE
)

isSQLKeyword(
  dbObj,
  name,
  keywords = .SQL92Keywords,
  case = c("lower", "upper", "any")[3],
  ...
)

isSQLKeyword.default(
  name,
  keywords = .SQL92Keywords,
  case = c("lower", "upper", "any")[3]
)

Arguments

dbObj

any DBI object (e.g., DBIDriver).

snames

a character vector of R identifiers (symbols) from which we need to make SQL identifiers.

keywords

a character vector with SQL keywords, by default it's .SQL92Keywords defined by the DBI.

unique

logical describing whether the resulting set of SQL names should be unique. Its default is TRUE. Following the SQL 92 standard, uniqueness of SQL identifiers is determined regardless of whether letters are upper or lower case.

allow.keywords

logical describing whether SQL keywords should be allowed in the resulting set of SQL names. Its default is TRUE

...

any other argument are passed to the driver implementation.

name

a character vector with database identifier candidates we need to determine whether they are legal SQL identifiers or not.

case

a character string specifying whether to make the comparison as lower case, upper case, or any of the two. it defaults to any.

Details

The algorithm in make.db.names first invokes make.names and then replaces each occurrence of a dot . by an underscore _. If allow.keywords is FALSE and identifiers collide with SQL keywords, a small integer is appended to the identifier in the form of "_n".

The set of SQL keywords is stored in the character vector .SQL92Keywords and reflects the SQL ANSI/ISO standard as documented in "X/Open SQL and RDA", 1994, ISBN 1-872630-68-8. Users can easily override or update this vector.

Value

make.db.names returns a character vector of legal SQL identifiers corresponding to its snames argument.

SQLKeywords returns a character vector of all known keywords for the database-engine associated with dbObj.

isSQLKeyword returns a logical vector parallel to name.

Bugs

The current mapping is not guaranteed to be fully reversible: some SQL identifiers that get mapped into R identifiers with make.names and then back to SQL with make.db.names() will not be equal to the original SQL identifiers (e.g., compound SQL identifiers of the form username.tablename will loose the dot “.”).

References

The set of SQL keywords is stored in the character vector .SQL92Keywords and reflects the SQL ANSI/ISO standard as documented in "X/Open SQL and RDA", 1994, ISBN 1-872630-68-8. Users can easily override or update this vector.


DBI

R Database Interface

v1.1.1
LGPL (>= 2.1)
Authors
R Special Interest Group on Databases (R-SIG-DB) [aut], Hadley Wickham [aut], Kirill Müller [aut, cre] (<https://orcid.org/0000-0002-1416-3412>), R Consortium [fnd]
Initial release
2021-01-04

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.