RJDBC错误地从数据库表中读取大整数

RJDBC错误地从数据库表中读取大整数,r,bigint,rjdbc,R,Bigint,Rjdbc,我正在将一个包含大整数的列从数据库检索到R中(使用RJDBCs dbGetQuery方法)。对于一个测试用例,可以考虑下面的数字 1000522010609612 1000522010609613 1000522010609614 1000522010609615 1000522010609616 1000522010609617 **971000522010609612 1501000522010819466 971000522010943717 15010005220107

我正在将一个包含大整数的列从数据库检索到R中(使用RJDBCs dbGetQuery方法)。对于一个测试用例,可以考虑下面的数字

1000522010609612 
1000522010609613 
1000522010609614 
1000522010609615 
1000522010609616 
1000522010609617 
**971000522010609612 
1501000522010819466 
971000522010943717 
1501000522010733490**
R似乎读错了内容。在R中对我可用的方式(在我使用RJDBC从数据库中读取之后)是:


请看最后4个数字。他们错了!它似乎会自动将数据转换成数据帧(这很好,但是)和损坏的数字(对于bigint)。对于如何解决上述问题,特别是在使用RJDBC包使用dbGetQuery时,有什么建议吗

您的数据将作为浮点数读入:

DF <- read.table(text="1000522010609612 
1000522010609613 
1000522010609614 
1000522010609615 
1000522010609616 
1000522010609617 
971000522010609612 
1501000522010819466 
971000522010943717 
1501000522010733490")

class(DF[,1])
#[1] "numeric"
sprintf("%20f", DF[10, 1])
#[1] "1501000522010733568.000000"

DF dbGetQuery应该有一个colClasses参数,允许将这些列作为字符导入。
DF <- read.table(text="1000522010609612 
1000522010609613 
1000522010609614 
1000522010609615 
1000522010609616 
1000522010609617 
971000522010609612 
1501000522010819466 
971000522010943717 
1501000522010733490")

class(DF[,1])
#[1] "numeric"
sprintf("%20f", DF[10, 1])
#[1] "1501000522010733568.000000"
library(bit64)

DF <- read.table(text="1000522010609612 
1000522010609613 
1000522010609614 
1000522010609615 
1000522010609616 
1000522010609617 
971000522010609612 
1501000522010819466 
971000522010943717 
1501000522010733490", colClasses = "integer64")

#                    V1
#1     1000522010609612
#2     1000522010609613
#3     1000522010609614
#4     1000522010609615
#5     1000522010609616
#6     1000522010609617
#7   971000522010609612
#8  1501000522010819466
#9   971000522010943717
#10 1501000522010733490