RODBC возвращает 0 значений - PullRequest
0 голосов
/ 11 мая 2011

Я обращаюсь к коммерческой базе данных.По приглашению:

 select PersonCode, PersonDate from CODB.mastertable where PersonCode=42
 PersonCode  PersonDate 
 ----------- ------------
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011
       42 Jan  3 2011

В R:

library(RODBC)
query <- "select PersonCode, PersonDate from CODB.mastertable where PersonCode=42"

connection1 <- odbcConnect("RESDB", uid="userID", pwd="pwdaccess", believeNRows=FALSE)

sqlQuery(connection1,query)


sqlQuery(connection1,query)
    PersonCode                 PersonDate 
1          42 01/03/2011 00:00:00.000 UTC
2          42 01/03/2011 00:00:00.000 UTC
3          42 01/03/2011 00:00:00.000 UTC
4          42 01/03/2011 00:00:00.000 UTC
5          42 01/03/2011 00:00:00.000 UTC
6           0 01/03/2011 00:00:00.000 UTC
7           0 01/03/2011 00:00:00.000 UTC
8           0 01/03/2011 00:00:00.000 UTC
9           0 01/03/2011 00:00:00.000 UTC
10          0 01/03/2011 00:00:00.000 UTC

Вывод запроса неверен.Кто-нибудь сталкивался с этой проблемой раньше?Вот некоторая дополнительная информация.

> sessionInfo()
R version 2.12.1 (2010-12-16)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
[1] C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] timeDate_2130.92 data.table_1.5.3 RODBC_1.3-2

loaded via a namespace (and not attached):
[1] tools_2.12.1

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Нашли решение;не знаю, почему это работает, но вот оно: используйте опцию rows_at_time=1

sqlQuery(connection1,query,rows_at_time=1)
1 голос
/ 11 мая 2011

Вы можете использовать odbcGetInfo () для просмотра информации об используемом драйвере.

Учитывая происхождение ODBC, вы пытались использовать ROracle (пакет DBI) вместо этого?RJDBC также может быть более стабильным вариантом в среде Linux, особенно теперь, когда код fetch () был переписан на Java (начиная с выпуска 0.2-0 для R-Forge), его производительность находится на одном уровне (если нетлучше, чем) RODBC.

Может показаться очевидным, но возникает ли проблема с R32 (если это даже вариант для вас)?Несовместимость 32-битных и 64-битных драйверов может быть заведомо трудно обнаружить;Windows будет жаловаться на несоответствие архитектуры при использовании R64 с 32-битным драйвером ODBC и приводить к сбою функции odbcConnect (), но я не знаю, совпадает ли Linux.

...