【发布时间】:2013-10-03 21:01:47
【问题描述】:
我需要处理大整数,主键值1380742793415240。
在 R 中,我可以轻松调整选项(scipen=100),但我需要将该数据存储在 postgres db 中。
我已经尝试使用结果为 dbWriteTable 默认(双精度):违反约束(可能在 ...4e+015 表示中重复键),并且在将目标列更改为 bigint 后,结果为:invalid input syntax for integer: "1.38074279341524e+015"。
示例:尝试在 dt 之后从 db 保存和加载
sample_dt <- data.table(a = c(20130101,20130102,20130102),
b = c(1380742793415240,1380742793415241,1380742793415242))
在postgres中保存和加载这类数据的有效方法是什么?
【问题讨论】:
-
另存为字符? (这是
options',我想知道options(scipen=100)是否真的在做你认为的那样。).Machine$integer.max < 1380742793415240 [1] TRUE -
使用字符字段我将无法有效地查询
sql <- paste0("select * from tbl where b >= '",one_id,"'")。并非所有 ID 都以 138 开头...,为了处理这种情况,我需要用零填充前导空格以使所有字符串都具有相同的 nchar。没有更优雅的解决方案来存储像212982,1380742793415240这样的数字作为主键列并使用>运算符有效地查询它们??? -
我真的不知道。我知道您提出的密钥不适合 R 的整数模式的约束。
标签: r bigint rpostgresql r-dbi