Проблема с получением в ROracle

У меня возникают проблемы при извлечении большого объема данных с использованием ROracle (у меня есть права только на чтение для базы данных Oracle). Поскольку количество данных превышает> 4 гигабайта, я не могу использовать dbGetQuery из ROracle, который отлично работает.

Вместо этого я пытаюсь использовать выборку dbSendQuery +, но, похоже, она не работает с Oracle. (Отлично работает с пакетом RmySQL)

Например:

С моей версией Oracle:

dbGetQuery(con2, "select * from PRODUCT_COMPONENT_VERSION")
                              PRODUCT    VERSION     STATUS
                              NLSRTL  10.2.0.3.0 Production
  Oracle Database 10g Enterprise Edition  10.2.0.3.0       Prod
                              PL/SQL  10.2.0.3.0 Production
             TNS for 32-bit Windows:  10.2.0.3.0 Production

если я попробую:

query <- "SELECT * FROM BFMXML_SUIVI"
rs <- dbSendQuery(con2, query, bulk_read = 10000L, prefetch = T)
test <- fetch(rs, n = 10)
dim(test)

[1] 1 13

dbGetRowCount(rs)

[1] 1

Но я ожидаю получить 10 строк...

Затем снова получаю:

test <- fetch(rs, n = 10)
dim(test)

[1] 1 13

dbGetRowCount(rs)

[1] 1

Следовательно, следующая строка не была извлечена и, глядя на результат теста, я вижу, что он заполнен только нулями (что неверно + это было не так при первом вызове выборки)

Видите ли вы альтернативу / решение?

1 ответ

Быстрые, и я должен добавить, что у меня нет бэкэнда Oracle, пригодного для тестирования этого:

  1. Я предпочитаю один res <- dbGetQuery(con, query) позвонить через dbSendQuery() а также fetch() сочетание.

  2. Я вспоминаю предыдущие обсуждения по списку r-sig-db, где было указано, что некоторые бэкэнды "лгут" о количестве данных, готовых к извлечению, используя n = -1 часто предлагалось в качестве исправления. Однако это, возможно, было в контексте RODBC,

Другие вопросы по тегам