λλ GitHub/hadley/dplyrμ λν΄ μκΈ° μ μ μ΄ μ§λ¬Έμ μΌμ΅λλ€.
http://stackoverflow.com/questions/21592266/i-cannot-connect-postgresql-schema-table-with-dplyr-package
dplyr, ggplots, reshape2 λ° ..... κ°μ¬ν©λλ€.
@hadley λΉμ μ λλ΅μ λν΄ μκ°νκ³ μ 체 SQL λ¬Έμ₯μ μμ±νκΈ° μν΄ μμ΅λλ€
my_tbl = tbl(my_db, dplyr::sql('SELECT * FROM mortalidad.def0307'))
κ±°κΈ°μμ μ€ν€λ§μ ν μ΄λΈμ μ°κ²°ν μ μμ΅λλ€. μ λ§ κ°μ¬ν©λλ€. β λμκ³
Greenplumκ³Ό ν¨κ» μμ ν λ μ΄ λμΌν λ¬Έμ λ₯Ό κ²μνλ €κ³ νμ΅λλ€. λΉμ μ SQL λ°©λ²μΌλ‘ λ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
λλ κ·Έκ²μ λ§μ‘±νλ€. λλ₯Ό κ±±μ μν€λ μ μΌν κ²μ sql λ¬Έμμ λ€μμ΄ κ΄μ°°λλ€λ κ²μ λλ€.
SELECT "var1", count(*) AS "n" FROM (SELECT * FROM mortalidad.mort12)
κ·Έλ£Ήνκ° μλ£λλ©΄. FROM λ€μ νμ μΏΌλ¦¬κ° μμΌλ©° μ΄κ²μ΄ SQL 쿼리μ ν¨μ¨μ±μ μ΄λ€ μ νμ λ¬Έμ κ° μλμ§ λͺ¨λ₯΄κ² μ΅λλ€. μ λ μ μΌλ³νμμ΄λ©° μ΄μ λν΄ μ λͺ¨λ¦ λλ€.
ν΄λΉ μ€ν€λ§μ μ€ν€λ§μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμ±νκΈ° μν΄ postgresqlμμ μ€νν μ μλ μΌλ ¨μ SQL λͺ λ Ήμ μ£Όμκ² μ΅λκΉ?
μ¬κΈ°μμ μ§μ°μ λν΄ μ£μ‘ν©λλ€. κ³νμ μμ±νκΈ° μν΄ λ³΄λ λλ€.
CREATE TABLE schema_name.table_name
(
codigo λ¬Έμ λ³ν(3),
nombre λ¬Έμ λ³ν(51),
μ½ν°λ¨νΈ μΊλ¦ν° λ°λ¦¬μμ΄μ
(7)
)
2014-03-19 18:56 GMT-03:00 Hadley Wickham [email protected] :
μ€νν μ μλ μΌλ ¨μ SQL λͺ λ Ήμ μλ €μ£Όμκ² μ΅λκΉ?
postgresqlμ μ¬μ©νμ¬ ν΄λΉ μ€ν€λ§μ μ€ν€λ§μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμ±νμκ² μ΅λκΉ?μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ Gi tHubhttps://github.com/hadley/dplyr/issues/244#issuecomment -38112148μμ νμΈνμΈμ.
.
λμκ³ κ°λ₯΄μ€λΌμ‘°
μμ¬
Departamento Programas de Salud
Instituto Nacional de Enfermedades Respiratorias
νκ· Blas Parera 8260 // μ°νν // μλ₯΄ν¨ν°λ //0342 - 4896850
http://www.anlis.gov.ar/inst/iner/
μ¬κΈ°μ κΈ°λ³Έμ μΌλ‘ λ κ°μ§ μ΅μ μ΄ μλ€κ³ μκ°ν©λλ€.
x.y
μ΄ "x"."y"
λ‘ μ΄μ€μΌμ΄νλ¨μ μλ―Έν©λλ€. μ΄κ²μ λ§€μ° κ°κ²°νλ€λ μ₯μ μ΄ μμ§λ§ Rμμ SQLλ‘ λ³νλ ν
μ΄λΈμ νλ μ΄λ¦μ .
λ₯Ό μ¬μ©ν μ μλ€λ λ¨μ μ΄ μμ΅λλ€(λ§€μ° μΌλ°μ μ΄μ§λ μμ).ident()
λ₯Ό νμ₯νμ¬ μ¬λ¬ μΈμλ₯Ό μ·¨νλ κ²μ
λλ€(μ: ident("x", "y")
. λλ dot(x, y)
μΈ μ μλλ‘ NSEλ₯Ό μννλ dot()
λ₯Ό μ μν μ μμ΅λλ€. μ΄κ²μ λ λ§μ νμ΄νμ΄μ§λ§ κΈ°μ‘΄ μ½λλ₯Ό μμμν€μ§ μμ΅λλ€.μ΄κ²μ ν
μ΄λΈ μ΄λ¦(μ: schema.table
)κ³Ό μ‘°μΈ(μ: table.field
)μμ νλ μ΄λ¦μ λͺ
ννκ² νλ λ° λͺ¨λ μ€μν©λλ€.
μ λ νμ¬ λͺ
μμ μΈ dot()
ν¨μμ κΈ°λκ³ μμ΅λλ€. μλνλ©΄ μ΄μ€μΌμ΄νκ° μ μμ μΌλ‘ μλνλ λ°©μμ λ³κ²½νλ κ²μ΄ μνν΄ λ³΄μ΄κΈ° λλ¬Έμ
λλ€.
ν , μ΄ μ¬μ© μ¬λ‘μ κ²½μ° λ€μμ μνν μ μμ΅λλ€.
my_tbl <- tbl(my_db, sql('mortalidad.def0307'))
κ·Έλ¦¬κ³ λμ€μ μ°Έμ‘°ν μ μλ λ€λ₯Έ μ½λ(μ±κ³΅νμ§ μμ)
dot <- function(...) {
args <- dots(...)
is_name <- vapply(args, is.name, logical(1))
if (any(!is_name)) {
stop("All arguments to dot() must be names.")
}
dots <- vapply(args, as.character, character(1))
class(dots) <- c("ident_multi", "ident", "sql", "character")
dots
}
dot <- function(...) {
out <- paste(escape(c(...), parens = FALSE), collapse = ".")
class(out) <- c("ident", "sql", "character")
out
}
#' <strong i="6">@export</strong>
escape.ident_multi <- function(x, parens = FALSE, collapse = ", ", con = NULL) {
y <- vapply(x, escape_ident, FUN.VALUE = character(1), con = con)
paste(y, collapse = ".")
}
#' <strong i="7">@export</strong>
format.ident_multi <- function(x, ...) paste0("<SQL> ", paste(x, collapse = "."))
# lahman_sqlite() %>% tbl("Batting")
# lahman_sqlite() %>% tbl("main.Batting")
# lahman_sqlite() %>% tbl(sql("main.Batting"))
# lahman_sqlite() %>% tbl(dot("main", "Batting"))
μλ ν΄λ€λ¦¬,
λλ κ°μ λ¬Έμ κ° μκ³ μ€μ²©μ΄ μ±λ₯μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€(μ κ²½μ°μλ 1μ΅ κ°μ νμ΄ μλ λ°μ΄ν°λ₯Ό μμ ν λ μ¬κ°ν λ¬Έμ μ λλ€). λ§μ§λ§ μλκ° μ€ν¨ν μ΄μ λ₯Ό μμΈν μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
κ°μ¬ ν΄μ
FWIW, μΌλΆ μ¬μ© μ¬λ‘μ κ²½μ° μ μ©ν κ΄μ©κ΅¬λ λ€μκ³Ό κ°μ΅λλ€.
dbSendQuery(con$con, build_sql("SET search_path TO ", schema_name))
κ·Έλ° λ€μ ν΄λΉ μ°κ²°μ μ¬μ©νλ νμ 쿼리λ ν΄λΉ μ€ν€λ§ λ΄μ μμ΅λλ€.
μλ ν λ,
κ°μ¬ν©λλ€ - κ·Έλ¦¬κ³ μ΄λ―Έ κ·Έλ° κ²μ μ¬μ©νκ³ μμ΅λλ€(μ€ν€λ§λ‘ κ²μ κ²½λ‘λ₯Ό νμ₯νλ€λ μ λ§ μ μΈνκ³ . νμ§λ§ μ§κΈκΉμ§λ λμμ΄ λ©λλ€. 2κ°μ μ€ν€λ§μ κ°μ μ΄λ¦μ κ°μ§ ν μ΄λΈμ΄ μλ κ²½μ°μλ κ·Έλ μ§ μμ΅λλ€.
μ΄μ¨λ base_scalar SQL λ³νκΈ°μμ '$' κΈ°νΈλ₯Ό μ€λ²λ‘λνμ§ μλ μ΄μ κ° κΆκΈν©λλ€.
κ·Έκ²μ r κ΄μ μμλ μλ―Έκ°μμ κ²μ λλ€.
a$b$c, νκ²½(μ: μ€ν€λ§), ba ν μ΄λΈ λ° ca μ΄μ΄ μμ΅λλ€. κ·Έλ° λ€μ μμ ν΄μΌ ν μ μΌν μκ°μ tbl_sqlμ΄λ©°, table_nameμ΄ λ°μ΄ν°λ² μ΄μ€μ μ‘΄μ¬νλ κ²½μ° κ·Έλ κ² κ°λ¨ν λ°©μμΌλ‘ νμΈν΄μλ μ λ©λλ€. λμ "SELECT" λ¬Έμ΄ SQL 쿼리μ μΌλΆμΈμ§ νμΈν μ μμΌλ©° κ·Έλ μ§ μμ κ²½μ° μμ SELECT *λ₯Ό μΆκ°νκ³ μ΄λ¬ν λ°©μμΌλ‘ λ³μλ₯Ό νμΈν μ μμ΅λλ€.
μ΄ κ²½μ° tbl κΈ°λ₯μ λν΄ NSEλ₯Ό νμ±νν μ μμ΅λκΉ?
μ, λκΈμ΄ νλ λ μμ΅λλ€.
dbSendQuery
RJDBCμμλ μ’ μ’ μλνμ§ μμ΅λλ€(μ μ΄λ μμ§μ μμλ). μμ 쿼리, μ¦ SET search_path TO ...
κ²°κ³Όλ₯Ό λ°ννμ§ μμ΅λλ€. dbSendQueryλ νλλ₯Ό κΈ°λν©λλ€. verticaμ κ²½μ° μ΄κ²μ μλνμ§ μμΌλ©° dbSendUpdateλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. MySQLμ κ²½μ°μλ λ§μ°¬κ°μ§μ λκΉ(λλ μ΅μν MySQLμ κ²½μ° dbSendUpdateκ° μ€ν¨νμ§ μμ΅λκΉ?)
λλ $
μ μ€λ²λ‘λ©νλ μμ΄λμ΄λ₯Ό μ’μν©λλ€. λ€μμ dplyrμμ μμ
ν λ νμ€ν μκ°νκ² μ΅λλ€.
@hhoeflin λ²ν°μΉ΄μ λννκΈ° μν΄ RJDBC λμ RPostgreSQLμ μ¬μ©ν΄ λ³΄μ ¨μ΅λκΉ?
μλμ - RPostgreSQLμ΄ μ΅μ μΈμ§ μ ν λͺ°λμ΅λλ€. μ΄μ¨λ - λ²ν°μΉ΄ λ°±μλλ μ΄μ RJDBCμ λν΄ μ΄λ―Έ ꡬνλμμ΅λλ€. μλνμ§λ§ λ°μ΄ν°λ² μ΄μ€μ μ‘΄μ¬νλ ν μ΄λΈμ΄ λ€λ₯Έμ§ νμΈνκΈ° μν΄ μ‘μΈμ€νλ €λ postgres ν μ΄λΈλ‘ λ¬Έμ κ° λ°μνμ΅λλ€.
μ΄κ²μ DBIλ₯Ό ν΅ν΄ μ²μ²ν ν΄κ²°λκ³ μμ΅λλ€. https://github.com/rstats-db/DBI/issues/24
κ°μ₯ μ μ©ν λκΈ
FWIW, μΌλΆ μ¬μ© μ¬λ‘μ κ²½μ° μ μ©ν κ΄μ©κ΅¬λ λ€μκ³Ό κ°μ΅λλ€.
κ·Έλ° λ€μ ν΄λΉ μ°κ²°μ μ¬μ©νλ νμ 쿼리λ ν΄λΉ μ€ν€λ§ λ΄μ μμ΅λλ€.