我的问题是如何在不使用默认“dbo”架构的 SQL Server 表上使用dplyr
函数,例如?tbl
有关更多上下文,我正在尝试将此处给出的 R 数据库示例应用于我自己的表: https ://db.rstudio.com/ (向下滚动到标题为“快速示例”的部分)。
开始没问题。第一部分运行良好:
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)
我能够连接到我的 SQL Server 并加载到我的数据库中的表中。我知道这是因为
DBI::dbListTables(con)
返回我的可用表的名称(但没有任何架构)。
下一行示例代码也适用于我自己的一个表,返回表中列的名称。
DBI::dbListFields(con, "mytable1")
但是,一旦我尝试运行下一行:
dplyr::tbl(con, "mytable1")
我收到一个Invalid object name 'mytable1'
错误,而不是示例中的预期表格预览。
当我在不同的表 mytable2 上运行相同的代码时,不会出现此错误。这一次,不出所料,我在运行时获得了 mytable2 的预览:
dplyr::tbl(con, "mytable2")
mytable1 和 mytable2 之间的一个区别是架构。mytable1 使用一个虚构的“abc”模式,即mydatabase.abc.mytable1。mytable2 使用默认的“dbo”模式,即mydatabase.dbo.mytable2。
我试过dplyr::tbl(con, "abc.mytable1")
了,但我得到了同样的Invalid object name
错误。同样,当我尝试时dplyr::tbl(con, "dbo.mytable2")
(尽管当我排除该dbo
部分时它运行良好)。
那么如何在不使用默认“dbo”架构的 SQL Server 表上使用dplyr
函数,例如?tbl
谢谢。