【发布时间】:2011-04-07 00:40:22
【问题描述】:
我们将所有实验室数据保存在 Sybase 数据库中。当我想进行数据操作和分析时,我使用 RODBC 将数据读入 R。
library(RODBC)
channellab <- odbcConnect("Labdata")
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen')
到目前为止一切都很好,除了 CGS.Specimen 是我们整个实验室资产的表格。有近 40000 个样本(行),有 66 个变量。阅读需要花费不必要的时间,尤其是当我只对一项拥有大约 1000 个标本的研究感兴趣时。解决它的明显方法是
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode="RP"')
但是当我运行时我得到了
[1] "42S22 -143 [Sybase][ODBC Driver][Adaptive Server Anywhere]Column not found: Column 'RP' not found" "[RODBC] ERROR: Could not SQLExecDirect 'SELECT * from CGS.Specimen WHERE StudyCode=\"RP\"'"
我玩过引号,也玩过转义斜线,但可惜我一无所获。
例如
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode= 'RP' ')
错误:“indivs
indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP' ")
.Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize, 中的错误: 不允许使用负长度向量
你有什么建议?
【问题讨论】:
-
问题是围绕在sql语句周围的单引号与变量值周围的引号混淆了吗?
-
此错误是由于 RP 周围的双引号引起的。我很困惑您是否尝试过@Preet 答案中的单引号?
-
是的。我已经尝试过 Preet 的建议。它们不起作用。
标签: r rodbc sybase-asa