R编写一个从Oracle数据库中提取数据的函数

Posted

技术标签:

【中文标题】R编写一个从Oracle数据库中提取数据的函数【英文标题】:R writing a function to extract data from an Oracle database 【发布时间】:2018-01-31 14:44:14 【问题描述】:

我正在尝试在 R 中编写一个函数,该函数接受输入并将其添加到预定义的 SQL 查询中。这是为了避免每次输入更改时都重写相同的查询,而是使用该函数。

但是我在函数的语法上有问题。

函数

该函数将input 作为唯一ID,并返回一个站点名称。

library(RODBC)

con= odbcConnect(dsn = "DB", uid="morp101", pwd="abcdxyz1234",rows_at_time=500)

getsitename=function(input) 

sitename=sqlQuery(con,"Select DISTINCT(SITE_NAME) FROM SITE_TABLE 
                    WHERE SITE_CODE = '&input&'")
return(sitename)


上述函数在测试时应给出以下输出

getsitename(1011APQ)

结果:麦迪逊湾

但是语法错误,不知道如何正确连接input

我们将不胜感激任何建议。并为缺乏可重复的数据而道歉,我不确定我如何才能为这个问题获得它。

【问题讨论】:

【参考方案1】:

您可以使用paste0() 创建您的查询:

getsitename=function(input) 
  query = paste0("Select DISTINCT(SITE_NAME) FROM SITE_TABLE WHERE SITE_CODE = '", input, "'")
  sitename=sqlQuery(con,query)
  return(sitename)

所以当input='1234'时,paste0()语句返回

"Select DISTINCT(SITE_NAME) FROM SITE_TABLE WHERE SITE_CODE = '1234'"

【讨论】:

当我将 paste0() 包装到一个函数中时,我收到以下错误消息:名称错误(帧)[名称(帧)==“x”] 在您的环境中有任何名为names 的变量或函数吗?见here。 我关闭了RStudio IDE中与该功能对应的选项卡,它工作了。奇怪的!感谢您的帮助

以上是关于R编写一个从Oracle数据库中提取数据的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 R 中的 netCDF 文件中提取变量名?

与 Oracle 数据库的 RODBC 连接不起作用,崩溃 R

R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series)使用window函数从时间序列对象中提取数据子集

在 R [重复] 中使用 $ vs 括号 [] 从数据框中提取一列

什么函数允许我根据R中列中的值从数据框中的列中提取数据?

如何从r中的.ini文件中提取数据?