r - 使用 RPostgres 向 Postgres 数据库添加数字
问题描述
我很喜欢使用 RPostgres(R 包)有一段时间了,它在大多数事情上都运行良好。我最近遇到的一件事是它似乎自动将 R 中的数字类型转换为我的 Postgres 数据库中的 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)
解决方案
虽然DBI 规范的一部分可能会或可能不会集成到特定的 API,这里是 RPostgres,但考虑field.types参数,传递列名和类型的命名列表。
下面使用 Postgres NUMERIC(precision, scale)类型(与 DECIMAL 同义),其中 精度是小数点前后值的总位数,比例是所需的小数位数。
# WITH NUMERIC(precision, scale)
dbWriteTable(con, "test_tbl", test_tbl, field.types=list(number_use="numeric(##,##)"))
推荐阅读
- python - 使用 Python ElementTree 从 XML 中提取值
- c# - 无法以编程方式单独选中 CheckedListBox 中的复选框
- c# - Microsoft.AspNetCore.Mvc 不呈现@scripts 部分
- spring-mvc - 解析模板 [registration] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
- c++ - 编译时可以平方而不溢出的最大值是多少(整数类型)?
- javascript - 使用咖啡脚本自动更新值
- deployment - 无法从 Digital Ocean Droplet 访问已部署的应用程序
- ios - 将类型扩展为具有相同关联类型的多个值
- r - 绘制 facet_grid 条形图时缺失值的错误消息
- jquery - 无法使用 jquery 使用 Web api 发布数据