Types 存储长串数字的最佳数据结构

Types 存储长串数字的最佳数据结构,types,numbers,amazon-redshift,sqldatatypes,Types,Numbers,Amazon Redshift,Sqldatatypes,我有一列数字,每个数字的最大长度是14位,每个数字中的每个字符都是唯一的数字,所以数字中没有字母或特殊字符 我尝试将数据类型int4和int8分配给numbers列,并将表加载到Redshift-PostgreSQL中。然而,我不断得到以下错误: numeric value "9555739320" out of range for integer 这让我很困惑,因为我认为int8是bigint类型,它可以存储非常大的数字,如会话8.1中所述。此网站中的数字类型:。如果我的

我有一列数字,每个数字的最大长度是14位,每个数字中的每个字符都是唯一的数字,所以数字中没有字母或特殊字符

我尝试将数据类型int4和int8分配给numbers列,并将表加载到Redshift-PostgreSQL中。然而,我不断得到以下错误:

numeric value "9555739320" out of range for integer
这让我很困惑,因为我认为int8是bigint类型,它可以存储非常大的数字,如会话8.1中所述。此网站中的数字类型:。如果我的理解是正确的,为什么号码9555739320超出范围


关于将此数字列分配给哪种数据类型,是否有任何建议?假设某些数字可能有前导0,例如000223568960,我想保留包括0在内的每个数字。

您的错误消息明确指出:

整数的数值9555739320超出范围

整数。如果您确实尝试分配给int8列,则错误消息将显示bigint,而不是integer。除非它不会,因为9555739320很容易在-9223372036854775808到9223372036854775807的bigint范围内,就像你自己说的那样

int8是bigint的别名。 int4或int是整数的别名

假设一些数字可能有前导0,例如000223568960,我想保留包括0在内的每个数字


如果要保留可变数量的前导零,则不能使用其中任何一个来修剪这些无关紧要的噪声。请改用text或varchar。

您的错误消息明确指出:

整数的数值9555739320超出范围

整数。如果您确实尝试分配给int8列,则错误消息将显示bigint,而不是integer。除非它不会,因为9555739320很容易在-9223372036854775808到9223372036854775807的bigint范围内,就像你自己说的那样

int8是bigint的别名。 int4或int是整数的别名

假设一些数字可能有前导0,例如000223568960,我想保留包括0在内的每个数字


如果要保留可变数量的前导零,则不能使用其中任何一个来修剪这些无关紧要的噪声。使用text或varchar代替。

我认为int4是bigint类型-这不是你链接的页面所说的。旁白:Redshift不是Postgres。它已经分叉了很长一段时间,从那以后,分歧不断扩大。8.1版的Postgres手册已经非常接近了,但离它还很远。坚持使用劣质的亚马逊产品授权文档:@Bergi:在这种特殊情况下,OP指向8.1手册而不是当前的手册是有道理的。不过,对于实际的问题,一切都一样。@Bergi谢谢你抓住了这个问题。我打了个错字,意思是说int8。我以为int4是bigint类型-这不是你链接的页面所说的。旁白:Redshift不是Postgres。它已经分叉了很长一段时间,从那以后,分歧不断扩大。8.1版的Postgres手册已经非常接近了,但离它还很远。坚持使用劣质的亚马逊产品授权文档:@Bergi:在这种特殊情况下,OP指向8.1手册而不是当前的手册是有道理的。不过,对于实际的问题,一切都一样。@Bergi谢谢你抓住了这个问题。我打了一个错别字,意思是说int8。谢谢,@erwinbrandsetter。有趣的是,我尝试分配了列文本类型,但仍然不起作用。这次错误显示数值37167582983超出整数的范围。我很困惑,因为我给它指定了文本类型,为什么它仍然把它当作一个整数。@Stan:它不会。在食物链中肯定还有另一个不必要的整数。找到并消除它。确保您的now字符串常量是正确的单引号。见:谢谢,@Erwin Brandsetter。有趣的是,我尝试分配了列文本类型,但仍然不起作用。这次错误显示数值37167582983超出整数的范围。我很困惑,因为我给它指定了文本类型,为什么它仍然把它当作一个整数。@Stan:它不会。在食物链中肯定还有另一个不必要的整数。找到并消除它。确保您的now字符串常量是正确的单引号。见: