Postgresql+dplyr:将bigint作为文本列加载

Postgresql+dplyr:将bigint作为文本列加载,r,postgresql,dplyr,R,Postgresql,Dplyr,我已连接到数据库: db = src_postgres(dbname = "a", host = "b", port = 5432, user = 'c', password = 'd') tab = tbl(db, "table") tab %>% mutate(id = as.character(id)) %>% group_by(id) %>% tally() %>% arrange(desc(n)) 然后我尝试计算每组中的行数: tab %&

我已连接到数据库:

db = src_postgres(dbname = "a", host = "b", port = 5432, user = 'c', password = 'd')
tab = tbl(db, "table")
tab %>%
  mutate(id = as.character(id)) %>%
  group_by(id) %>%
  tally() %>%
  arrange(desc(n)) 
然后我尝试计算每组中的行数:

tab %>%
  group_by(id) %>%
  tally() %>%
  arrange(desc(n)) 
结果是:

         id            n
1     6.014e+18 13529622
2     6.014e+18 10906413
3     6.014e+18  8243263
4     6.011e+18  7472041
5     6.014e+18  7094833
6     6.012e+18  6730177
7     6.011e+18  6236673
8     6.011e+18  5924966
9     6.011e+18  4537380
10    6.011e+18  4393328
是否有方法访问文本表单中的id列?在数据库中可以使用id::TEXT之类的功能

也许您可以使用:

  format(id, scientific = FALSE)

您可以将id列强制转换为数据库中的文本:

db = src_postgres(dbname = "a", host = "b", port = 5432, user = 'c', password = 'd')
tab = tbl(db, "table")
tab %>%
  mutate(id = as.character(id)) %>%
  group_by(id) %>%
  tally() %>%
  arrange(desc(n)) 

看起来它与dplyr不兼容。至少在处理SAL数据库时是这样。此外,在纯R中,它也不是完全精确的:>format123456789123456789,scientific=F[1]123456789123456784在数据库表中哪个数据类型是ID?此列是bigint。PS:请忽略我之前评论中的SAL。我在那里打错了。好的,我想你是在寻找像optionscipen=100这样的选项,以强制数字以固定的符号出现。我唯一关心的是R如何将这些值存储在data.frame中,因为在这种情况下,必须将bigint作为文本导入。使用查询时,我会将此列强制转换为TEXT id::TEXT。但是我不知道如何使用dplyr来实现这一点,或者有没有可能…列是int64吗?这个列是bigintYes,这会导致问题,因为R没有本机的64位整数。最好的办法是在dplyr github上提交一个bug报告,这样我就可以考虑它了。有没有办法让dplyr生成SQL为:SELECT id::TEXT FROM table;?如果它被存储为文本,对我来说完全没问题。这对我来说很有效。应该接受答案,因为问题明确要求将其作为字符加载。如果有一个可以与bit64包一起使用的实现,那当然很好。