【问题标题】:R : problem with the dplyr::tbl() function due to restricted permissionR:由于权限受限,dplyr::tbl() 函数存在问题
【发布时间】:2022-09-27 12:12:17
【问题描述】:

我使用需要存储到服务器中的大型数据库。

因此,要在 Rstudio 上使用它们,我必须使用 dbConnect 函数打开与 Microsoft SQL Server 的连接:

conn <- dbConnect(odbc(),\"myconnection\",uid=\"***\",pwd=\"***\",schema=\"dbo\",access=\"readonly\")

为了使用 dplyr,我必须使用 tbl 函数创建数据引用:

data <- tbl(conn, \"data\") 

但是其中一个在线数据框包含我无法读取的列,因为我没有访问权限,但我可以读取其他所有内容。 tbl() 函数背后的 SQL 查询是:

SELECT * FROM data

这是我的问题。 即使我尝试选择一个特定的列,它也不起作用(见下文),所以我无法创建我的引用,我也无法工作。

select(tbl(conn, \"data\"), \"columnX\")

=

SELECT columnX FROM data

我认为这是 tbl() 函数和 \"SELECT *\" 的调用阻止了我。

你知道我能做什么吗?是否有可以解决我的问题的类似功能?

    标签: r sql-server dplyr odbc tbl


    【解决方案1】:

    如果您知道您有权访问的列,那么一种选择是使用您自己的 SQL 查询绕过默认访问 SELECT * FROM ...

    远程表由两个组件定义:

    1. 数据库连接
    2. 对数据库的查询

      当您使用默认方法tbl(conn, 'data') 连接时,它默认为查询SELECT * FROM data

      但这是另一种方法:

      custom_query = 'SELECT columnX FROM data'
      remote_table = tbl(conn, dbplyr::sql(customer_query))
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多