Подтвердить что ты не робот

Я не могу подключить postgresql schema.table с пакетом dplyr

Я пытаюсь подключить postgres с функциями dplyr

my_db <- src_postgres(dbname = 'mdb1252', user = "diego", password = "pass")
my_db
src:  postgres 9.2.5 [[email protected]:5432/mdb1252]
tbls: alf, alturas, asociad, atenmed, base, bfa_boys_p_exp, bfa_boys_z_exp,
  bfa_girls_p_exp, bfa_girls_z_exp, bres, c21200012012, c212000392011, c212000532011,
  c21200062012, c212006222012, c212007352012, c212012112013, c212012242012,
  c212012452012, c2222012242012, calles, cap, cap0110, casos_tbc_tr09, casos_tbctr09,
  casosvadela, catpo, cbcvl, cie09, cie10, cie103d, cie103dantigua, cie10c, cie9a,
  cie9mc, clasiarc, coalc, coddepto, codedades, codest, codlocaerbio, codprov, coheb,
  cohec, cohep, cohiv, coho09_20110909_m, coign, combl, comet, comp, comport, conev,
  conymad, copri, corci3cod, corci910, cores, corin, cotab, cutoi, cutto, def0307,......

но когда я пытаюсь подключить tbl

my_tbl <- tbl(my_db, 'def0307')

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  no existe la relación «def0307»
LINE 1: SELECT * FROM "def0307" WHERE 0=1;
                      ^
)

Я думаю, проблема связана с проблемой схемы, поскольку sql должен быть:

 SELECT * FROM mortalidad.def0307

Я сделал my_tbl < - tbl(my_db, 'mortalidad.def0307');

my_tbl <- tbl(my_db, c('mortalidad','def0307')) без решения.

Мне очень нравится работать с dplyr Im от SQL, но я хочу решить эту проблему и попробовать навыки dplyr.

Спасибо заранее.

4b9b3361

Ответ 1

Наконец, dplyr имеет решение этой проблемы благодаря последней версии 0.7, недавно объявленной Хэдли Уикхэмом. Библиотеки DBI и dbplyr значительно упростили связь между dplyr и PostgreSQL.

con <- DBI::dbConnect(RPostgreSQL::PostgreSQL(), 
host = "database.rstudio.com",
user = "hadley",
password = rstudioapi::askForPassword("Database password"))
tbl <- dplyr::tbl(con, dbplyr::in_schema('mortalidad','def0307'))

Ответ 2

Возможно, вы захотите этого,

db=src_postgres(dbname = 'mdb1252',  
               user = "diego", password = "pass", options="-c search_path=mortalidad")

Ответ 3

Если кто-то заканчивается здесь с той же проблемой, вот что работает для меня: (взято из комментария @Diego от 6 февраля 14)

postgre_table <- function (src, schema, table) {
  paste('SELECT * FROM', paste(schema, table, sep = '.')) %>% 
    sql() %>% tbl(src = src)
}