2

私は対処する必要があります、私は大きなint、主キーの値だと思います1380742793415240。RI ではオプション (scipen=100) を簡単に調整できますが、そのデータを postgres db に保存する必要があります。私はすでに dbWriteTable のデフォルト (倍精度) を result: に違反しています (おそらく ...4e+015 表現でキーが重複しています) 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でこの種のデータを保存およびロードする効果的な方法は何ですか?

4

1 に答える 1

3

この件名は RpostgreSQL メーリング リストでよく議論され、解決されました。誰かが同じ問題を抱えている場合はリンクしてください

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
于 2013-10-04T22:37:03.490 に答える