【发布时间】:2021-01-12 07:20:50
【问题描述】:
我有一列数字(每个数字的最大长度为 14 位),每个数字中的每个字符都是数字(因此数字内没有字母或特殊字符)。
我尝试将数据类型 int4 和 int8 分配给 numbers 列,并将表加载到 Redshift (PostgreSQL)。但是,我不断收到以下错误:
numeric value "9555739320" out of range for integer
这让我很困惑,因为我认为 int8 是 bigint 类型,它可以存储非常大的数字,如会话 8.1 中所述。此站点中的数字类型:https://www.postgresql.org/docs/current/datatype-numeric.html。如果我的理解是正确的,为什么“9555739320”这个数字会超出范围?
对于将此数字列分配给什么数据类型有什么建议吗?假设某些数字可能有前导 0,例如“000223568960”,我想保留包括 0 在内的每个数字。
【问题讨论】:
-
"我认为
int4是bigint类型" - 这不是您链接的页面所说的。 -
旁白:Redshift 不是 Postgres。它已经分叉了很长时间,并且从那时起差异一直在增长。 8.1 版的 Postgres 手册已经接近了它,但仍然相距甚远。坚持亚马逊为其产品提供的(劣质的,授予的)文档:docs.aws.amazon.com/redshift/latest/dg/welcome.html
-
@Bergi:在这种特殊情况下,OP 指向 8.1 手册而不是当前手册是有道理的。 (不过,对于实际问题来说都是一样的。)
-
@Bergi 感谢您了解这一点。我打了一个错字,意思是说“int8”。
标签: types numbers amazon-redshift sqldatatypes