我正在尝试使用dbReadTable,但是我的表位于数据库内部的架构下。
例如,使用下面的代码,我可以连接:
db_ANZSCO <- tbl(con, in_schema("BGVIEW" ,"ANZSCO"))
但是当我尝试使用dbReadTable时,出现以下错误;
dbReadTable(con, "ANZSCO"))
Error: <SQL> 'SELECT * FROM "ANZSCO"'
nanodbc/nanodbc.cpp:1587: 42000: [Microsoft][ODBC SQL Server Driver][SQL Server]The SELECT permission was denied on the object 'ANZSCO', database 'BurningGlass', schema 'dbo'.
我了解该表位于一个架构下,但是我不知道如何使用dbReadTable进行访问,我确实尝试查看了文档,但是到目前为止我仍然没有成功。
Tks
答案 0 :(得分:1)
尝试使用新颖的DBI::Id()
函数,该函数接受模式名称和表名称作为单独的参数。
con <- DBI::dbConnect(drv = odbc::odbc(), dsn = "qqqq") # Replace `qqqq`.
a <- DBI::Id(
schema = "BGVIEW",
table = "ANZSCO"
)
ds <- DBI::dbReadTable(con, a)
DBI::dbDisconnect(con)
如果这不起作用,请在您的问题中粘贴表定义以及创建连接的代码。您已用[rodbc]
标记了您的问题,但似乎您正在使用较新且与DBI兼容的odbc软件包。
另请参见