Die*_*ego 16 postgresql r rpostgresql dplyr
我试图用postpres连接dplyr函数
my_db <- src_postgres(dbname = 'mdb1252', user = "diego", password = "pass")
my_db
src: postgres 9.2.5 [postgres@localhost: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,......
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接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;
^
)
Run Code Online (Sandbox Code Playgroud)
我认为问题是架构问题,因为sql应该是:
SELECT * FROM mortalidad.def0307
Run Code Online (Sandbox Code Playgroud)
我做了my_tbl< -tbl(my_db, 'mortalidad.def0307');
my_tbl <- tbl(my_db, c('mortalidad','def0307')) 没有解决方案.
我有很多乐趣与SQL中的dplyr Im合作,但我希望解决这个问题并尝试dplyr技能.
提前致谢.
Die*_*ego 11
最后,由于Hadley Wickham最近宣布的最新版本0.7,dplyr解决了这个问题.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'))
Run Code Online (Sandbox Code Playgroud)
小智 7
你可能想要这个,
db=src_postgres(dbname = 'mdb1252',
user = "diego", password = "pass", options="-c search_path=mortalidad")
Run Code Online (Sandbox Code Playgroud)