我需要处理,我想大的int,主键值1380742793415240
。
在R中我可以轻松调整选项(scipen = 100),但我需要将这些数据存储在postgres db中。
我已经尝试过dbWriteTable默认(双精度)结果:违反constaint(可能是...... 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中保存和加载此类数据的有效方法是什么?
答案 0 :(得分:3)
在RpostgreSQL邮件列表上对该主题进行了很好的讨论和解决,如果有人遇到同样的问题,请将其链接起来:https://groups.google.com/forum/#!topic/rpostgresql-dev/NDc7NfUP6M8
内容如下:
library(RPostgreSQL)
# Loading required package: DBI
c=dbConnect("PostgreSQL")
a <- 1380742793415240
b <- 1380742793415241
dc <-data.frame(a=as.character(a), b=as.character(b))
dbWriteTable(c,"testclosenumberch", dc)
# [1] TRUE
dbGetQuery(c, "select * from testclosenumberch")
# row.names a b
# 1 1 1380742793415240 1380742793415241
dbGetQuery(c, "select a::bigint - b::bigint from testclosenumberch")
# ?column?
# 1 -1