如何在 SQL 服务器 non-standard 架构 table 上使用 dplyr tbl
How to use dplyr tbl on a SQL Server non-standard schema table
我的问题是如何在不使用默认 "dbo" 的 SQL 服务器 table 上使用 dplyr
函数,例如 tbl
] 模式?
有关更多上下文,我正在尝试将此处给出的 R 数据库示例应用到我自己的 tables:
https://db.rstudio.com/(向下滚动到标题部分 "Quick Example")。
开始还不错。第一部分运行很好:
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 服务器并加载到我的数据库中的 table。我知道这是因为
DBI::dbListTables(con)
returns 我可用的 table 的名称(但没有任何模式)。
下一行示例代码在应用于我自己的 table 时也有效,返回 table 中列的名称。
DBI::dbListFields(con, "mytable1")
但是,一旦我尝试 运行 下一行:
dplyr::tbl(con, "mytable1")
我收到 Invalid object name 'mytable1'
错误,而不是示例中预期的 table 预览。
当我运行在不同的table上使用相同的代码时,我的table2不会出现此错误。这一次,正如预期的那样,当我 运行:
时,我得到了 table2 的预览
dplyr::tbl(con, "mytable2")
mytable1 和 mytable2 之间的一个区别是架构。 mytable1 使用 made-up "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 服务器 table 上使用 dplyr
函数,例如 tbl
?谢谢。
您可以使用 dbplyr::in_schema
.
你的情况:
dplyr::tbl(con, dbplyr::in_schema("abc", "mytable1"))
我的问题是如何在不使用默认 "dbo" 的 SQL 服务器 table 上使用 dplyr
函数,例如 tbl
] 模式?
有关更多上下文,我正在尝试将此处给出的 R 数据库示例应用到我自己的 tables: https://db.rstudio.com/(向下滚动到标题部分 "Quick Example")。
开始还不错。第一部分运行很好:
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 服务器并加载到我的数据库中的 table。我知道这是因为
DBI::dbListTables(con)
returns 我可用的 table 的名称(但没有任何模式)。
下一行示例代码在应用于我自己的 table 时也有效,返回 table 中列的名称。
DBI::dbListFields(con, "mytable1")
但是,一旦我尝试 运行 下一行:
dplyr::tbl(con, "mytable1")
我收到 Invalid object name 'mytable1'
错误,而不是示例中预期的 table 预览。
当我运行在不同的table上使用相同的代码时,我的table2不会出现此错误。这一次,正如预期的那样,当我 运行:
时,我得到了 table2 的预览dplyr::tbl(con, "mytable2")
mytable1 和 mytable2 之间的一个区别是架构。 mytable1 使用 made-up "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 服务器 table 上使用 dplyr
函数,例如 tbl
?谢谢。
您可以使用 dbplyr::in_schema
.
你的情况:
dplyr::tbl(con, dbplyr::in_schema("abc", "mytable1"))