使用RPostgres将数字添加到Postgres数据库

时间:2018-07-03 17:44:56

标签: r postgresql r-dbi

我很喜欢使用RPostgres(R包)已有一段时间了,它在大多数情况下都能很好地工作。我最近遇到的一件事是,它似乎自动将Postgres数据库中R中的数字类型转换为REAL。 REAL类型似乎是非常不精确的,因此理想情况下,我希望将数字转换为可以处理更多数字的类型(没有什么疯狂,但至少为10个左右)。有人知道我该怎么做吗?这是添加数字之前的示例...

library(RPostgres)
library(DBI)
library(tibble)

con <- DBI::dbConnect(RPostgres::Postgres(),
                     host = 'localhost',
                     port = 5432,
                     user = 'test',
                     password = '')

test_tbl <- tibble::tibble(number_use =  434.94823992383445)

DBI::dbWriteTable(con, "test_tbl", test_tbl)

1 个答案:

答案 0 :(得分:1)

尽管DBI specifications的一部分可能集成或未集成到特定的API(这里是RPostgres),但请考虑 field.types 参数,并传递列名称和类型的命名列表。

以下使用Postgres NUMERIC(precision, scale)类型(与DECIMAL相同),其中 precision 是小数点前后的值的总位数,其中 scale 为数字所需的十进制数字。

# WITH NUMERIC(precision, scale)
dbWriteTable(con, "test_tbl", test_tbl, field.types=list(number_use="numeric(##,##)"))