RODBC中临时表的问题

RODBC中临时表的问题,r,rodbc,R,Rodbc,我有下面的代码,我正试图使用它创建一个表,该表每分钟都有一个日期时间戳,然后左键连接到另一个表,最后使用一些tsql在返回的最终select语句中创建一个新字段。sql在sql server中运行得很好,但当我尝试在RODBC中运行它时,会出现错误、空字符向量或带有类似sql server错误消息的字符向量。我看过一些关于在RODBC中使用temp表并用“go”分隔它们的帖子,或者关于在中分隔sqlQuery语句的帖子。我尝试过用“go”分隔步骤,但没有成功,我不确定将语句分隔成几个sqlQue

我有下面的代码,我正试图使用它创建一个表,该表每分钟都有一个日期时间戳,然后左键连接到另一个表,最后使用一些tsql在返回的最终select语句中创建一个新字段。sql在sql server中运行得很好,但当我尝试在RODBC中运行它时,会出现错误、空字符向量或带有类似sql server错误消息的字符向量。我看过一些关于在RODBC中使用temp表并用“go”分隔它们的帖子,或者关于在中分隔sqlQuery语句的帖子。我尝试过用“go”分隔步骤,但没有成功,我不确定将语句分隔成几个sqlQuery语句在这种情况下是否有效,因为我希望在最后的select语句中使用两个临时表和一些tsql函数。非常感谢您的任何建议

Code:

library("forecast")
library("tseries")
library("sqldf")
library("manipulate")
library("caret")
library("qdapTools")
library("RODBC")
library("dplyr")
library("xts")




con<-odbcConnect("RsqlConnect")

dfETest<-sqlQuery(con,"

            create table #TempFM (dt datetime not null);
            declare @datestart datetime = '2015-01-01 00:00', @dateend datetime = '2015-12-31 23:59';

            while @datestart <= @dateend
            begin
            insert into #TempFM (dt)
            select dateadd(minute, number, @datestart)
            from master..spt_values 
            where
            type = 'p' and number between 0 and 1439
            and dateadd(minute, number, @datestart) <= @dateend;
            set @datestart = dateadd(minute, 1440, @datestart);
            end 


            select 
            dTime,                

            1 as CV

            into #TempP
            from TableM


            select DATEADD(hh,datepart(hour,dt), DATEADD(mi,(datepart(minute,dt)/15)*15,cast(cast(dt as DATE)as datetime))) as VTQ, 
            *
            from #TempFM f
            left join #TempP p on p.dTime = f.dt
            ")


Data:

dput(TableM[1:100,])
structure(list(dTime = structure(c(1435505100, 1424580900, 1423598220, 
1426616460, 1440028200, 1449095520, 1426370640, 1423697880, 1440517860, 
1426479960, 1428707940, 1450308780, 1449771840, 1437770880, 1433912820, 
1449501900, 1427121780, 1430257500, 1446993480, 1440373200, 1432256100, 
1426721700, 1449449340, 1422559320, 1423162920, 1422683580, 1423545300, 
1424242200, 1445704920, 1447931340, 1443834480, 1450638300, 1446287220, 
1451246520, 1449158280, 1447267260, 1448101560, 1449361860, 1450958520, 
1447351680, 1448352120, 1449038040, 1447534680, 1448908620, 1440340980, 
1443400980, 1448952120, 1448851680, 1448856540, 1447201440, 1448128440, 
1448061660, 1438615980, 1444851960, 1447698180, 1450836060, 1451323080, 
1447693140, 1447981980, 1440027300, 1449005220, 1446873960, 1451392260, 
1449064500, 1450879140, 1451177100, 1450883100, 1449081840, 1448165040, 
1443192720, 1442772900, 1447801140, 1444959300, 1446919980, 1447376220, 
1447702980, 1450558080, 1450360620, 1443759360, 1440593340, 1450672440, 
1441950840, 1449247140, 1447280580, 1449704160, 1451545800, 1445292540, 
1449862440, 1450046580, 1449707520, 1450376520, 1450904100, 1447016700, 
1445739720, 1449717180, 1445973000, 1438405920, 1450006500, 1443343800, 
1449465540), class = c("POSIXct", "POSIXt"), tzone = ""), CV = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L)), .Names = c("dTime", "CV"), row.names = c(NA, 
100L), class = "data.frame")
代码:
图书馆(“预测”)
图书馆(“tseries”)
库(“sqldf”)
图书馆(“操纵”)
库(“插入符号”)
库(“qdapTools”)
图书馆(“RODBC”)
图书馆(“dplyr”)
图书馆(“xts”)

con使用单独的
sqlQuery
语句有什么不对?我认为临时表是持久的连接,而不是查询/调用(我可能错了),在这种情况下,它不应该造成问题。(如果它不起作用,则可能有助于编辑带有错误的问题,不管是哪个特定的SQL命令触发了它。)@r2evans我得到的结果是:str(dfETest)chr[1:3]“42S22 207[Microsoft][ODBC SQL Server Driver][SQL Server]列名无效…我认为问题在于我创建的第一个临时表用于存储所有分钟数。我尝试在RODBC中单独运行该查询,但没有成功。使用单独的
sqlQuery
语句有什么错?我认为临时表是持久的连接,而不是查询/调用(我可能错了),在这种情况下,它应该不会造成问题。(如果它不起作用,则可能会有助于编辑带有错误的问题,无论是哪个特定SQL命令触发了它。)@r2evans我得到的结果是:str(dfETest)chr[1:3]“42S22 207[Microsoft][ODBC SQL Server Driver][SQL Server]无效列名。。。我认为问题在于我创建的第一个临时表存储了所有分钟。我曾尝试在RODBC中单独运行该查询,但没有成功。