В твоем случае:
опрос, как я могу использоватьdplyr
функции, такие какtbl
в таблицах SQL Server, которые не используют схему "dbo" по умолчанию?
Для большего контекста я пытаюсь применить приведенный здесь пример базы данных 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
часть).
Так как я могу использоватьdplyr
функции, такие какtbl
в таблицах SQL Server, которые не используют схему "dbo" по умолчанию? Благодарю.