红移复制命令错误"Overflow, Column type: Integer"



我正在使用RedShift数据库的复制命令,并将JSON文件从S3存储桶存储到数据库。但是我遇到了此错误"溢出,列类型:整数",错误代码为1216,JSON文件中的行号为33。

这是我的JSON文件:

             {
                "id": 119548805147,
                "title": "Shoes",
                "vendor": "xyz",
                "product_type": "",
                "handle": "shoes",
                "options": [
                    {
                        "id": 171716739099,
                        "product_id": 119548805147,
                        "name": "Size",
                        "position": 1,
                        "values": [
                            "9",
                            "10",
                            "11"
                        ]
                    },
                    {
                        "id": 171716771867,
                        "product_id": 119548805147,
                        "name": "Color",
                        "position": 2,
                        "values": [
                            "Red",
                            "white",
                            "Black"
                        ]
                    }
                ],
                "images": [],
                "image": null
            }   //line number 33
            {
                "id": 119548805147,
                "title": "Shoes",
                "vendor": "xyz",
                "product_type": "",
                "handle": "shoes",
                "options": [
                    {
                        "id": 171716739099,
                        "product_id": 119548805147,
                        "name": "Size",
                        "position": 1,
                        "values": [
                            "9",
                            "10",
                            "11"
                        ]
                    },
                    {
                        "id": 171716771867,
                        "product_id": 119548805147,
                        "name": "Color",
                        "position": 2,
                        "values": [
                            "Red",
                            "white",
                            "Black"
                        ]
                    }
                ],
                "images": [],
                "image": null
            }

我在红移中的桌子如下

CREATE TABLE products (
    "_id" int4 DEFAULT "identity"(297224, 0, '1,1'::text),
    "id" int4,
    title varchar(50),
    product_type varchar(200),
    vendor varchar(200),
    handle varchar(200),
    variants_id int4,
    "options" varchar(65535),
    images varchar(65535),
    image varchar(65535)
);

和我在Redshift中的复制命令在这里:

copy products
from 's3://kloudio-data-files'
access_key_id 'my access key'
secret_access_key 'my secret key'
json 'auto'

我认为列和JSON文件数据类型不匹配,但我没有得到它。

错误表明您要输入的值大于类型所拥有的值,我可以从您的数据示例中看到id采取的值171716771867大于INTEGER可以容纳的最大值。

整数在红移中长4个字节,因此它们可以保持(2 ^ (8))^4 = 4294967296不同的值,这为我们提供了范围:[-2147483648, 2147483647],或者可以从官方文档中的表格中读取此内容

解决方案是为您的数据使用其他类型。如果您希望ID作为数字或使用文本字段,请使用大整数。请注意,我仅扫描了您的样本输入1个溢出错误,可能有必要纠正其他字段的类型

最新更新