首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPostgreSQL -将R中的参数传递给RPostgreSQL中的查询

RPostgreSQL -将R中的参数传递给RPostgreSQL中的查询
EN

Stack Overflow用户
提问于 2018-08-02 08:07:10
回答 2查看 1.5K关注 0票数 0

问题:如何在RPostgreSQL查询中传递变量?

示例:在下面的示例中,我尝试将日期'2018-01-03‘传递给查询

代码语言:javascript
复制
library(RPostgreSQL)

dt <- '2018-01-03'

connect <- dbConnect(PostgreSQL(), 
                 dbname="test",
                 host="localhost",
                 port=5432,
                 user="user", 
                 password="...")
result <- dbGetQuery(connect,
                "SELECT * FROM sales_tbl WHERE date = @{dt}")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 08:15:36

您可以使用paste0生成查询并将其传递给dbGetQuery:

代码语言:javascript
复制
library(RPostgreSQL)

dt <- '2018-01-03'

connect <- dbConnect(PostgreSQL(), 
  dbname="test",
  host="localhost",
  port=5432,
  user="user", 
  password="...")

query <- paste0("SELECT * FROM sales_tbl WHERE date='", dt, "'")
result <- dbGetQuery(connect, query)
票数 2
EN

Stack Overflow用户

发布于 2019-02-15 18:33:38

最安全的方法是将查询参数化,如前面提到的这里

示例:

代码语言:javascript
复制
library(RPostgreSQL)

dt <- '2018-01-03'

connect <- dbConnect(drv = PostgreSQL(), 
  dbname ="test",
  host = "localhost",
  port = 5432,
  user = "user", 
  password = "...")

query <- "SELECT * FROM sales_tbl WHERE date= ?"
sanitized_query <- dbSendQuery(connect, query)
dbBind(sanitized_query, list(dt))
result <- dbFetch(sanitized_query)

在这里,通过传递?,您可以对查询进行清理,以避免SQL注入攻击。

我喜欢做的另一件事是创建.Renviron文件来存储我的credintials。例如,对于上面的连接,.Renviron文件将如下所示。

代码语言:javascript
复制
dbname = test
dbuser = me
dbpass = mypass
dbport = 5432
dbhost = localhost

保存文件,重新启动RStudio (在启动时加载.Renviron文件)。然后使用Sys.getenv(variable)访问凭据

代码语言:javascript
复制
#example:
connect <- dbConnect(drv = PostgreSQL(), 
  dbname = Sys.getenv("dbname"),
  host = Sys.getenv("dbhost"),
  port = Sys.getenv("dbport"),
  user = Sys.getenv("dbuser"), 
  password = Sys.getenv("dbpass"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51648611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档