Я отправляю запросы в конкретную базу данных Oracle от R по RJDB C более трех лет. Все это время результаты в R, казалось, совпадали с результатами, которые я получал бы в браузере базы данных (в моем случае это DBeaver).
Теперь я пишу запросы к таблице с первичным NUMBER (22,0) и внешние ключи со значениями в миллиардах (> 1 000 000 000).
А теперь результаты в R не совпадают с результатами в DBeaver. Эти данные являются конфиденциальными, и я не нашел способа проиллюстрировать свою проблему без раскрытия данных, и я до сих пор не дошел до точки репликации проблемы в базе данных Oracle моего собственного создания. Я открыт для любых предложений!
Пример запроса:
SELECT
PK_PATIENT_IDENTIFIER_ID
FROM
PATIENT_IDENTIFIERS pi1
WHERE
FK_PATIENT_ID = <SECRET>
ORDER BY
PK_PATIENT_IDENTIFIER_ID
В DBeaver я получаю 6 строк со значениями в диапазоне 70 000 000 - 75 000 000.
Когда отправленный в R (см. ниже), я получаю 8 строк со значениями в диапазоне от 100 000 000 до 300 000 000.
Находятся ли мои значения в блоке where, получающем какой-либо полусовместимый тип? Нужно ли где-то утверждать, что это длинные целые числа?
driver <-
JDBC(driverClass = "oracle.jdbc.OracleDriver",
classPath = config$oracle.jdbc.path)
con.string <- paste0("jdbc:oracle:thin:@//",
config$host,
":",
config$port,
"/",
config$database)
Connection <-
dbConnect(driver,
con.string,
config$user,
config$pw)
query <- "SELECT
PK_PATIENT_IDENTIFIER_ID
FROM
PATIENT_IDENTIFIERS pi1
WHERE
FK_PATIENT_ID = <SECRET>
ORDER BY
PK_PATIENT_IDENTIFIER_ID"
query.res <- dbGetQuery(Connection, query)