-->

为什么会WHERE语句不中的SQLQuery RODBC工作?(Why will WHERE sta

2019-10-29 12:21发布

我们一直在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驱动程序] [Adaptive Server Anywhere的]柱未找到:列 'RP' 未找到”“[RODBC]错误:无法SQLExecDirect的“SELECT * FROM CGS.Specimen WHERE StudyCode = \ “RP \”'”

我已经打了引号,我已经与逃生斜线但很可惜我已经变得无处发挥。

例如

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ')

错误:在意想不到的符号 “indivs <-sqlQuery(channellab, 'SELECT * FROM CGS.Specimen WHERE StudyCode =' RP”

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ")

误差在.CALL(C_RODBCFetchRows,ATTR(信道, “handle_ptr”),最大,BUFFSIZE,:负长度矢量不允许

你有什么建议?

Answer 1:

您报告的最后一个错误是从.CALL函数C函数RODBCFetchRows。 因此,带引号的问题似乎得到解决。 然而,与上述错误,您仍然有问题。 也许行不会正确地报告(C函数尝试分配基于该值矢量,但不检查负值)。 尝试:

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'", believeNRows = FALSE)


Answer 2:

编辑:

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode=\'RP\'')  

好吧,你可以运行在那里返回一些数据的另一个查询?

WHERE StudyCode=StudyCode例如? 这是否给出关于-ve长度相同的错误?

这意味着上面的是逸出StudyCode正确。 该-Ve lenght是另一个错误。 你可以用*,但特定的列返回并非所有列那里有没有空?



Answer 3:

试用选项believeNRows = FALSE。 这为我工作在一个类似的错误(负长度误差)。

这个问题是更重要的一点: 使用RODBC从转速R查询Oracle数据库



文章来源: Why will WHERE statement not work in sqlQuery in RODBC?