4

我正在尝试在 SQL Server 上使用 dplyr 执行 SQL 查询:

tbl(con, sql(sqlQuery))

查询是使用动态生成的sprintf("SELECT ... WHERE a = '%s')。这是一个不好的做法,因为它可能被滥用于 SQL 注入,但我在 dplyr 中找不到任何文档或参数化查询的工作示例。可以做吗,怎么做?

连接 ( con) 使用 DBI、odbc 库和 {SQL Server Native Client 11.0} ODBC 驱动程序:

con <- DBI::dbConnect(odbc::odbc(),
                      Driver = "{SQL Server Native Client 11.0}",
4

1 回答 1

0

根据您需要参数的用途,根据您的示例,它看起来可能是WHERE语句,您可以在 R 中定义参数,然后将其用于您的 dplyr 动词。

my_param <- "FILTER_VALUE" #create param
my_table <- tbl(con, "TABLE_NAME") #create ref tibble
my_table <- my_table %>% filter( a == my_param ) # filter by param
my_table <- my_table %>% collect() # execute query

您在 R 中分配的任何内容都可以在filter或中引用mutate

于 2017-11-14T14:56:21.973 回答