我需要在 Rmarkdown 中执行 SQL 引擎 block ,其中查询的表具有由 R 代码定义的动态名称。
我知道可以使用 ?
将变量链接到当前 R 环境。 ,但这仅适用于字符串和数字,不适用于“对象”。
当然,我可以使用 DBI::dbGetQuery()
运行 SQL 查询。但这意味着将我的所有请求(很长)构建为一个不舒服的字符串(我有很多 block 要运行)。
基本上我需要的是:
`` {r}
mytable <- "name_of_table_on_sql_server"
``
然后
`` {sql}
select * from ?mytable
``
此操作失败,因为创建的查询是 select * from "name_of_table_on_sql_server"
SQL 需要 select * from name_of_table_on_sql_server
的地方(不带引号)。
使用glue
将 mytable 定义为 mytable <- glue("name_of_table_on_sql_server")
也不工作。
有什么想法吗?
最佳答案
您发布的内容的一个细微变化对我有用(我没有 SQL Server,所以我使用 sqlite
进行了测试):
`` {r}
library(glue)
mytable <- glue_sql("name_of_table_on_sql_server")
``
然后
`` {sql}
select * from ?mytable;
``
我唯一真正的更改是使用函数 glue_sql
并在 SQL
block 的末尾添加分号 (;
)。
关于sql - Rmarkdown - 使用表名作为动态 sql block 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188798/