我希望使用RPostgreSQL
包将数据插入到我的postgres表中,但我希望动态选择字段名称。例如:
library(RPostgreSQL)
insert_data <- function(conn_obj, num_to_insert, field_name = c('col1', 'col2')){
field_name <- match.arg(field_name)
query <- paste0('insert into table1 (',
field_name,
') VALUES $1')
postgresqlExecStatement(conn_obj,
query,
list(num_to_insert))
}
insert_data
通过动态构建包含应放置num_to_insert
的字段名称的查询来工作。我担心sql注入的可能性,所以我的问题是,match.arg
是否保护我免受sql注入?是否有其他方法可以构建此类查询,以便字段名称可以用作(已清理的)变量?