Cómo usar dplyr tbl en una tabla de esquema no estándar de SQL Server
Mi pregunta es cómo puedo usardplyr
funciones, comotbl
, en las tablas de SQL Server que no usan el esquema "dbo" predeterminado?
Para más contexto, estoy tratando de aplicar el ejemplo de la base de datos R aquí en mis propias tablas:https://db.rstudio.com/ (desplácese hacia abajo hasta la sección titulada "Ejemplo rápido").
Empieza bien. Esta primera sección funciona bien:
install.packages("dplyr")
install.packages("odbc")
install.packages("dbplyr")
install.packages("DBI")
con <- DBI::dbConnect(odbc::odbc(),
Driver = "SQL Server",
Server = [My Server Name],
Database = "mydatabase",
UID = [My User ID],
PWD = [My Password],
Port = 1433)
Puedo conectarme a mi SQL Server y cargar en las tablas de mi base de datos. Lo se porque
DBI::dbListTables(con)
Devuelve los nombres de mis tablas disponibles (pero sin ningún esquema).
La siguiente línea de código de ejemplo también funciona cuando se aplica a una de mis propias tablas, devolviendo los nombres de las columnas en la tabla.
DBI::dbListFields(con, "mytable1")
Sin embargo, una vez que intento ejecutar la siguiente línea:
dplyr::tbl(con, "mytable1")
Consigo unInvalid object name 'mytable1'
error, en lugar de la vista previa de la tabla esperada como en el ejemplo.
Este error no surge cuando ejecuto el mismo código en una tabla diferente, mytable2. Esta vez, como se esperaba, obtengo una vista previa de mytable2 cuando ejecuto:
dplyr::tbl(con, "mytable2")
Una diferencia entre mytable1 y mytable2 es el esquema. mytable1 utiliza un esquema "abc" inventado, es decirmydatabase.abc.mytable1. mytable2 usa el esquema "dbo" predeterminado, es decirmydatabase.dbo.mytable2.
Lo intentédplyr::tbl(con, "abc.mytable1")
pero me sale lo mismoInvalid object name
error. Del mismo modo cuando lo intentédplyr::tbl(con, "dbo.mytable2")
(aunque funciona bien cuando excluyo eldbo
parte).
Entonces, ¿cómo puedo usardplyr
funciones, comotbl
, en las tablas de SQL Server que no usan el esquema "dbo" predeterminado? Gracias.