sql - 从 tbl_dbi 中提取 SQL 作为字符串的首选方法是什么?

标签 sql r dplyr tidyverse dbplyr

我想从 tbl_dbi 中提取 SQL 并将其保存为字符向量。

我已经尝试过

library(dplyr)
my_tbl_dbi <- tbl(conn, "myTable")

my_query <- capture.output(show_query(my_tbl_dbi), type = message) %>%
    paste0(collapse = " ")

这在过去对我有用,但现在不起作用,也许是因为我正在使用接收器功能。我的问题是“是否有更强大/标准的方法来从 tbl_dbi 中提取 SQL 查询,或者我正在做的事情是唯一的方法吗?”

最佳答案

as.character(db_sql_render(my_tbl_dbi$src$con, my_tbl_dbi))

注意:

methods("show_query")
## [1] show_query.tbl_lazy* show_query.tbl_sql* 

dbplyr:::show_query.tbl_sql
## function (x, ...) 
## {
##     message("<SQL>\n", db_sql_render(x$src$con, x))
##     invisible(x)
## }
## <environment: namespace:dbplyr>

db_sql_render.DBIConnection() 的来源:

db_sql_render.DBIConnection <- function(con, sql, ...) {
  qry <- sql_build(sql, con = con, ...)
  sql_render(qry, con = con, ...)
} 

关于sql - 从 tbl_dbi 中提取 SQL 作为字符串的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000581/

相关文章:

c# - ERP会计年度交易表的单数据库VS多数据库?

sql - 将 Epoch 时间戳转换为 sql server(人类可读格式)

json - 除了下面之外,还有其他方法可以将 json.rows 文件加载到 RStudio 中吗?

r - 如何用R中的频率表获得中位数?

r - 将表达式传递到 `MoreArgs` 的 `mapply`

r - 如何将transmute与grep功能结合起来?

mysql - 大小写计数未给出正确结果

sql - 查找表实现 - 一个表或单独的表

r - 如何使用 NSE 并使用 ...(省略号)过滤表达式?

根据不同列中的值将多列中的值替换为 NA