2014-09-30 2 views
6

SQLite 데이터베이스에 연결하려면 비교적 간단합니다. 드라이버와 경로를 SQLite 파일에 전달합니다.dbConnect에 전달할 수있는 인수는 무엇입니까?

다른 DBI 호환 데이터베이스 백엔드 (PostgreSQL, MySQL 등)의 경우 dbConnect에 전달할 수있는 정보가 명확하지 않으며 잘 설명되어 있지 않습니다.

연결을 형성하기 위해 dbConnect으로 전달할 수있는 것을 어떻게 찾을 수 있습니까?

답변

12

사용 가능한 인수는 백엔드에 따라 다르므로 dbConnect은 드라이버와 ... 인수 만 표시합니다.

진행하기 전에 데이터베이스 연결에 필요한 패키지를로드하십시오 (RSQLite, RPostgreSQL, RMySQL 또는 무엇이든).


드라이버

이 데이터베이스 백엔드의 이름과 동일해야합니다의 이름을 찾을 수 있습니다. 현재 지원되는 값은 "SQLite", "PostgreSQL", "MySQL", "Oracle", "JDBC"입니다.

문자열은 항상 DB 패키지의 함수 이름이어야합니다. 따라서 의심 스러울 경우 패키지를 통해 검색하십시오 (예 : ls("package:RSQLite") 사용). 그럴듯한 이름을 추측하십시오.


당신은 showMethods를 사용하여 연결을위한 방법을 사용할 수 볼 수있는 ... 인수

를 찾을 수 있습니다.

showMethods("dbConnect") 
## Function: dbConnect (package DBI) 
## drv="character" 
## drv="PostgreSQLConnection" 
## drv="PostgreSQLDriver" 
## drv="SQLiteConnection" 
## drv="SQLiteDriver" 

이름에 Driver과 함께 적절한 백엔드에 대한 메서드를 가져옵니다.

getMethod(dbConnect, "PostgreSQLDriver") 
# The 'Method Definition' section of the output 
## function (drv, ...) 
## postgresqlNewConnection(drv, ...) 

사용 가능한 인수는 이전 메서드 정의 내에서 호출 된 함수의 인수입니다. 통증이 조금있다

?postgresqlNewConnection

args(postgresqlNewConnection) 
## function (drv, user = "", password = "", host = "", dbname = "", 
##  port = "", tty = "", options = "", forceISOdate = TRUE) 

와 MySQL SQLite는 호출 함수 정의 로컬 프로그래밍에 액세스한다.

args(body(getMethod("dbConnect", "MySQLDriver"))[[2]][[3]]) 
## function (drv, dbname = NULL, username = NULL, password = NULL, 
## host = NULL, unix.socket = NULL, port = 0, client.flag = 0, 
## groups = "rs-dbi", default.file = NULL, ... 

?OraSupport

약간 다르게
# Oracle 
args(.oci.Connect) 
## function(drv, username = "", password = "", dbname = "", prefetch = FALSE, 
##  bulk_read = 1000L, stmt_cache = 0L, external_credentials = FALSE, 
##  sysdba = FALSE) 

RJDBC 작품

?MySQL

args(body(getMethod("dbConnect", "SQLiteDriver"))[[2]][[3]]) 
## function (drv, dbname = "", ..., loadable.extensions = TRUE, 
## cache_size = NULL, synchronous = "off", flags = SQLITE_RWC, 
## vfs = NULL) 
## function (...) 

?SQLite

. 다른 하위 함수를 호출하는 대신 해당 dbConnect 메서드는 추가로 명명 된 args를 받아들입니다.

formalArgs(getMethod(dbConnect, "JDBCDriver")) 
## [1] "drv"  "url"  "user"  "password" "..." 
+0

불행히도 r-inside.org의 링크는 죽어있는 것 같습니다. 또한'sqliteNewConnection'이나 mysqlNewConnection을 찾을 수 없습니다 (더 이상 v0.10 https://github.com/r-dbi/RMySQL/blob/7c3ba1dc8bd59ba972350401f4c421b12da03253/NEWS.md#version-010 이후로 내 보내지 않습니다) –

관련 문제