ODBC查询中的R-变量

时间:2014-10-15 20:04:20

标签: sql r variables odbc

我需要运行多个查询以将数据从SQL服务器获取到R多个时间段。我想在sqlQuery函数中使用句点作为查询内部的一个变量。

我的查询如下:

fld_fec_car<-sqlQuery(dbNGC, "select fld_fec_car 
from neptuno.data_mart.[dbo].[tbl_periodo_asig]
where fld_cod_emp='tg'
and fld_periodo ='072014'")

我想要......

per='072014'


fld_fec_car<-sqlQuery(dbNGC, "select fld_fec_car 
from neptuno.data_mart.[dbo].[tbl_periodo_asig]
where fld_cod_emp='tg'
and fld_periodo =&per")

是否可以在sqlQuery函数中包含变量值?感谢。

2 个答案:

答案 0 :(得分:2)

可能有一个更优雅的解决方案,但我通常做的是创建一个函数来根据输入生成查询文本:

genQuery <- function(arg)
{
  lhs <- "select fld_fec_car 
  from neptuno.data_mart.[dbo].[tbl_periodo_asig]
  where fld_cod_emp='tg'
  and fld_periodo ='"
  rhs <- "';"
  ##
  Query <- paste0(lhs,arg,rhs)
  Query <- gsub("\n"," ",Query)
  Query <- gsub("\t"," ",Query)
  return(Query)
}
##
> genQuery(123)
[1] "select fld_fec_car   from neptuno.data_mart.[dbo].[tbl_periodo_asig]  where fld_cod_emp='tg'  and fld_periodo ='123';"
> genQuery(436)
[1] "select fld_fec_car   from neptuno.data_mart.[dbo].[tbl_periodo_asig]  where fld_cod_emp='tg'  and fld_periodo ='436';"

gsub("\n"," ",...)gsub("\t"," ",...)只是为了摆脱换行符和制表符 - 我的SQL客户端不接受它们;你的可能会有所不同。

答案 1 :(得分:0)

我用过粘贴:

a<-paste("SELECT fld_fec_car FROM neptuno.data_mart.[dbo].[tbl_periodo_asig] where fld_cod_emp='tg' and fld_periodo='", per, "'", sep='')

然后

sqlQuery(dbNGC, a)