我正在尝试在SQL Server上使用dplyr执行SQL查询:
tbl(con, sql(sqlQuery))
查询是使用sprintf("SELECT ... WHERE a = '%s')
动态生成的。这是一种不好的做法,因为它可能会被滥用于 SQL 注入,但我找不到 dplyr 中参数化查询的任何文档或工作示例。能做到吗,怎么做?
连接 (con
( 正在使用 DBI、odbc 库和 {SQL Server 本机客户端 11.0} ODBC 驱动程序:
con <- DBI::dbConnect(odbc::odbc(),
Driver = "{SQL Server Native Client 11.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
中引用。