dbplyr tbl 和 DBI dbListTables - 在 table 存在时出现冲突的结果
dbplyr tbl and DBI dbListTables - conflicting results on table presence
这是我的代码
library(DBI)
library(dplyr)
con <- dbConnect(odbc::odbc(), some_credentials)
dbListTables(con, table_name = "Table_A")
上面的代码 returns Table_A
表示存在 table。现在我正在尝试查询 Table_A
df <- as.data.frame(tbl(con, "Table_A"))
然后回来:
Error: <SQL> 'SELECT *
FROM "Table_A" AS "zzz18"
WHERE (0 = 1)'
nanodbc/nanodbc.cpp:1587: 42S02: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'Table_A'.
所以dplyr
没看到。我怎么能和解。我已经仔细检查了拼写。
没有可重现的例子有点难,但我会尽力而为。我认为您应该添加经常用于连接数据库的 dbplyr
包。
library(DBI)
library(dbplyr)
library(tidyverse)
con <- dbConnect(odbc::odbc(), some_credentials)
df <- tbl(con, "Table_A") %>%
collect() #will create a dataframe in R and use dplyr
这里有一些额外的资源:
https://cran.r-project.org/web/packages/dbplyr/vignettes/dbplyr.html
希望对您有所帮助!
如前所述,驻留在非默认模式中的任何对象(table、存储过程、函数等)都需要显式引用该模式。默认模式包括 SQL 服务器中的 dbo
和 PostgreSQL 中的 public
。因此,如文档所示,在 dbdplyr and Id
or SQL
in DBI:
中使用 in_schema
# dbplyr VERSION
df <- tbl(con, in_schema("myschema", "Table_A"))
# DBI VERSION
t <- Id(schema = "myschema", table = "Table_A")
df <- dbReadTable(con, t)
df <- dbReadTable(con, SQL("myschema.Table_A"))
这是我的代码
library(DBI)
library(dplyr)
con <- dbConnect(odbc::odbc(), some_credentials)
dbListTables(con, table_name = "Table_A")
上面的代码 returns Table_A
表示存在 table。现在我正在尝试查询 Table_A
df <- as.data.frame(tbl(con, "Table_A"))
然后回来:
Error: <SQL> 'SELECT *
FROM "Table_A" AS "zzz18"
WHERE (0 = 1)'
nanodbc/nanodbc.cpp:1587: 42S02: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'Table_A'.
所以dplyr
没看到。我怎么能和解。我已经仔细检查了拼写。
没有可重现的例子有点难,但我会尽力而为。我认为您应该添加经常用于连接数据库的 dbplyr
包。
library(DBI)
library(dbplyr)
library(tidyverse)
con <- dbConnect(odbc::odbc(), some_credentials)
df <- tbl(con, "Table_A") %>%
collect() #will create a dataframe in R and use dplyr
这里有一些额外的资源:
https://cran.r-project.org/web/packages/dbplyr/vignettes/dbplyr.html
希望对您有所帮助!
如前所述,驻留在非默认模式中的任何对象(table、存储过程、函数等)都需要显式引用该模式。默认模式包括 SQL 服务器中的 dbo
和 PostgreSQL 中的 public
。因此,如文档所示,在 dbdplyr and Id
or SQL
in DBI:
in_schema
# dbplyr VERSION
df <- tbl(con, in_schema("myschema", "Table_A"))
# DBI VERSION
t <- Id(schema = "myschema", table = "Table_A")
df <- dbReadTable(con, t)
df <- dbReadTable(con, SQL("myschema.Table_A"))