我的 R 代码没有从 SQL Server 获取数据
Posted
技术标签:
【中文标题】我的 R 代码没有从 SQL Server 获取数据【英文标题】:My R code is not fetching data from SQL Server 【发布时间】:2016-08-10 17:38:31 【问题描述】:虽然 R 上使用的普通 Select 语句正在获取数据,但我无法在以下查询中使用 SQL 获取数据: SQL 部分正在 SQL Server 2008 上运行。另外,我正在使用 RStudio 有什么建议吗?
qf<-sqlQuery(mycon,"USE MDM_STAT
+ DECLARE @RUNMONTH INT;
+ DECLARE @RUNYEAR INT;
+ DECLARE @PERIOD INT;
+ DECLARE @FISCALRUNYEAR INT;
+ DECLARE @FISCALRUNYEAR_BEGIN INT;
+ SET @RUNMONTH=MONTH(GETDATE());
+ SET @RUNYEAR=YEAR(GETDATE());
+ SET @PERIOD=
+ CASE
+ WHEN @RUNMONTH>3 THEN (@RUNMONTH-3)
+ ELSE 9+@RUNMONTH
+ END
+ ;
+ SET @FISCALRUNYEAR=
+ CASE
+ WHEN @RUNMONTH>3 THEN @RUNYEAR
+ ELSE @RUNYEAR-1
+ END
+ ;
+ SET @FISCALRUNYEAR_BEGIN=
+ CASE
+ WHEN @PERIOD=12 THEN @FISCALRUNYEAR
+ ELSE @FISCALRUNYEAR-1
+ END
+ ;
+
+ select * from dbo.TEMP_CUST_OPERATING_PROFIT OP
+ where OP.Sales_Year=@FISCALRUNYEAR
+ AND OP.PERIOD<=@PERIOD
+ UNION
+ select * from dbo.TEMP_CUST_OPERATING_PROFIT OP
+ where OP.Sales_Year=@FISCALRUNYEAR_BEGIN
+ AND OP.PERIOD>@PERIOD")
【问题讨论】:
您需要SET NOCOUNT ON;
作为 SQL 中的第一条语句。
RODBC command 'sqlQuery' has problems with table variables in t-SQL的可能重复
@nrussell 使用该命令,如果我使用 SET NOCOUNT ON,我会收到以下错误:> qf [1] "42000 195 [Microsoft][SQL Server Native Client 10.0][SQL Server]' No' 不是公认的 SET 选项。” [2] "[RODBC] 错误:无法执行 SQLExecDirect
@nrussell.. 使用 SET NOCOUNT ON 时出现以下错误; > qf [1] "42000 195 [Microsoft][SQL Server Native Client 10.0][SQL Server]'No' 不是可识别的 SET 选项。" [2] "[RODBC] 错误:无法执行 SQLExecDirect
已经很晚了,但是,如果我有这样的查询,我肯定会创建一个存储过程来代替。
【参考方案1】:
我建议您按照以下步骤操作:
1) 您应该确保连接字符串设置正确,以便与数据库建立正确的连接。 这里有一个很好的解释:short youtube tutorial
2) 在 R 中写:
library(RODBC)
channel = odbcConnect("The_database_name_your_are_connecting_to")
...
sqlQuery(channel ,"your query here")
close(channel)
我建议你从最简单的查询开始,在你确定它有效之后, 使用更复杂的查询
希望它对你有用,祝你好运!
【讨论】:
我确实从一个如此简单的查询开始,它确实有效。只有这种类型的查询不起作用以上是关于我的 R 代码没有从 SQL Server 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 中的日期获取月份编号(不是月份名称)?