使用dplyr包来操作数据库中的表时,它会创建一个可由show_query函数查看的sql语句.如果调用除了不执行这条SQL语句head,compute,collect或collapse.在某些情况下,生成的sql语句dplyr比其执行更重要(例如:为某些数据库包中尚未实现的操作创建函数,如copy (subquery) into file_name;)
我想知道:如何获取创建的sql dplyr并将其放入字符串中?
好.查看dbplyr源代码,我发现dbplyr::sql_render返回表sql语句,可以用来复合另一个sql:
sql_query = dbplyr::sql_render(tbl_table)
Run Code Online (Sandbox Code Playgroud)
show_query()输出 dplyr 生成的 sql 查询作为诊断消息。如果对象res是使用 dplyr 的 sql 查询的结果,则可以使用 提取 sql 查询并将其强制为字符向量capture.output()。查询的每一新行都作为元素存储在向量中output,因此paste(tail(output, -1),collapse="")可以根据需要用于获取长度为一字符向量的结果。(我正在删除最终输出的输出向量的第一个元素,因为它似乎只是不必要的标签“”。)
## Capture
output <- capture.output(res %>% show_query(), type="message")
## Concatenate character vector to a one length character vector
final_output <- paste(tail(output, -1), collapse="")
Run Code Online (Sandbox Code Playgroud)