设置dbGetQuery以将integer64作为整数返回

use*_*199 8 odbc integer r dplyr r-dbi

默认情况下,当我dbGetQuery()从DBI包中使用时,它返回类型的列integer64作为integer64类的类bit64.

然后我dplyr用来尝试过滤和操作我的结果但是因为dplyr不支持类型的对象而产生问题integer64.

是否有可能设置dbGetQuery()返回integer64的列类integer?

krl*_*mlr 9

即使没有完全支持64位整数(参见GitHub问题),你仍然可以使用dplyr来改变integer64:

library(dplyr, warn.conflicts = FALSE)
df <- data_frame(a = bit64::as.integer64(1:3), b = 1:3, c = 1.5:4)
df
#> # A tibble: 3 x 3
#>                 a     b     c
#>   <S3: integer64> <int> <dbl>
#> 1               1     1   1.5
#> 2               2     2   2.5
#> 3               3     3   3.5
df %>% mutate_if(bit64::is.integer64, as.integer)
#> # A tibble: 3 x 3
#>       a     b     c
#>   <int> <int> <dbl>
#> 1     1     1   1.5
#> 2     2     2   2.5
#> 3     3     3   3.5
Run Code Online (Sandbox Code Playgroud)


小智 6

DBI规范通过bigint参数提供此功能。驱动程序之间的支持显然会有所不同。

dbConnect(drv, bigint="integer", ...)
Run Code Online (Sandbox Code Playgroud)

以下值的行为如下:

“整数”:总是返回整数,无声地溢出

“数字”:始终以数字形式返回,无声地四舍五入

“字符”:始终将小数表示形式返回为字符

“ integer64”:作为数据类型返回,可以使用as.integer()(带有警告警告),as.numeric()和as.character()进行强制转换

来源:https: //cran.r-project.org/web/packages/DBI/vignettes/spec.html#_specification_17