RODBC查询从Windows返回结果,但不从Linux返回结果
我有一个R脚本,它从windows上的R studio的SQL查询中获取结果,但在linux上不是Rapache。我的两个连接字符串是:RODBC查询从Windows返回结果,但不从Linux返回结果,r,rodbc,rapache,R,Rodbc,Rapache,我有一个R脚本,它从windows上的R studio的SQL查询中获取结果,但在linux上不是Rapache。我的两个连接字符串是: channel = odbcDriverConnect('Driver=FreeTDS;Server=server\\instance;Database=DB;Uid=name;Pwd=password') channel = odbcDriverConnect('Driver={SQL Server};Server=name\\instance;Databa
channel = odbcDriverConnect('Driver=FreeTDS;Server=server\\instance;Database=DB;Uid=name;Pwd=password')
channel = odbcDriverConnect('Driver={SQL Server};Server=name\\instance;Database=DB;Trusted_Connection=True;')
我构造了一些SQL并将其传递给此函数:
get_sql_data <- function(query,as.is=TRUE){
return(sqlQuery(channel, query,as.is=as.is, errors=TRUE))
}
我得到以下信息:
2:In eval(expr、envir、enclose):head
3:评估中(expr、envir、enclose):
4:在eval(expr、envir、enclose)中:头尾
我做错了什么?我需要使用sqlGetResults()
还是什么?所以问题似乎是我在声明之前声明了变量,如下所示:
DECLARE @foobar CHAR(3) 'AAA';
SELECT TOP (5) id, name, desc FROM tbl WHERE code = @fooBar;
将其更改为:
SELECT TOP (5) id, name, desc FROM tbl WHERE code = 'AAA';
导致结果集显示在Linux和Windows中。我将调查到底为什么会发生这种情况。我遇到了windows/linux在行为上的差异,并通过以下windows和linux版本之间的修改解决了这一问题:
在windows上:
dbhandle <- odbcDriverConnect(paste("driver={SQL Server};server=", ...
dbhandle <- odbcDriverConnect(paste("driver=SQLServer;server=", ...
dbhandle为什么有两个连接字符串?第二个只是覆盖了第一个。其中一个字符串是您在windows上使用的,另一个字符串是您在linux上使用的吗?@DavidMarxyes这是正确的。我在Linux上使用FreeTDS,在Windows上使用Microsoft驱动程序。
dbhandle <- odbcDriverConnect(paste("driver=SQLServer;server=", ...