Ale*_*lex 7 postgresql r rpostgresql
继此问题和随后的答案之后: Postgres 中 -Infinity 和 Infinity 的适当值
和文档,似乎很清楚real和double precision数字类型支持正无穷大和负无穷大。但是,没有提及numeric类型,只是range有“无限制”。
类型是否支持正无穷大和负无穷大numeric(在 PostgreSQL 9.5 中),如果是,如何插入这些值?
编辑(如@TimBiegeleisen 所建议):发生这种情况的原因是我试图将数字列从R数据库表中写入。该列包含Inf值,但使用dbWriteTablefromRPostgreSQL错误:
Error in postgresqlgetResult(new.con) :
RS-DBI driver: (could not Retrieve the result :
ERROR: invalid input syntax for type numeric: "Inf"
Run Code Online (Sandbox Code Playgroud)
在我的特殊情况下,我可以将这些值转换Inf为NA并将其写为NULL,但是当列包含缺失值或not null 在数据库中强加条件时,这不起作用。我想另一件事是写一个任意大的数字。
NUMERIC不支持 +-infinity,虽然它支持 NaN。这是一个相当不幸的限制。解决它可能需要更改磁盘二进制格式,numeric这可能具有挑战性......
craig=> SELECT NUMERIC 'NaN';
numeric
---------
NaN
(1 row)
craig=> SELECT NUMERIC '-inf';
ERROR: invalid input syntax for type numeric: "-inf"
LINE 1: SELECT NUMERIC '-inf';
^
craig=> SELECT NUMERIC '+inf';
ERROR: invalid input syntax for type numeric: "+inf"
LINE 1: SELECT NUMERIC '+inf';
craig=> SELECT NUMERIC '+infinity';
ERROR: invalid input syntax for type numeric: "+infinity"
LINE 1: SELECT NUMERIC '+infinity';
^
craig=> SELECT NUMERIC 'infinity';
ERROR: invalid input syntax for type numeric: "infinity"
LINE 1: SELECT NUMERIC 'infinity';
^
craig=> SELECT NUMERIC '-infinity';
ERROR: invalid input syntax for type numeric: "-infinity"
LINE 1: SELECT NUMERIC '-infinity';
Run Code Online (Sandbox Code Playgroud)