我在R中有一个使用RSQLite的数据库。该数据库中只有一个表,我希望用户能够导入.csv文件以向该表添加数据。如果我使用dplyr来执行此操作,是否需要担心“清理”电子表格中的数据以确保它们不会破坏数据库?例如,确保撇号不会干扰SQL查询。 dplyr会照顾这个吗?我对SQL不太熟悉,所以请忍受我。
答案 0 :(得分:3)
只要在RSQLite
中使用了参数化语句(dplyr与之无关),即应该将潜在危险的数据设置为单独的参数,而不是直接放在查询文本中,您就应该是安全的。 RSQLite将确保正确地对值进行转义以避免SQL注入。
documentation提供了此类查询的示例,此处带有delete
动作,但是可以插入。
rs <- dbSendStatement(mydb, 'DELETE FROM iris WHERE "Sepal.Length" < :x')
## added: bind the actual data here:
dbBind(rs, param = list(x = 4.5))
dbGetRowsAffected(rs)