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数据库中提取数据的函数的主要内容,如果未能解决你的问题,请参考以下文章
与 Oracle 数据库的 RODBC 连接不起作用,崩溃 R
R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series)使用window函数从时间序列对象中提取数据子集