首页 > 解决方案 > 亚马逊红移中的数据类型转变

问题描述

我正在将我的数据从 s3 加载到 redshift。我注意到红移错误日志中查询中的数据类型发生了变化。

这是我正在创建的表...

main_covid_table_create = ("""
                        CREATE TABLE IF NOT EXISTS main_covid_table(
                        SNo INT IDENTITY(1, 1),
                        ObservationDate DATE,
                        state VARCHAR,
                        country VARCHAR,
                        lastUpdate DATE,
                        Confirmed DOUBLE PRECISION,
                        Deaths DOUBLE PRECISION,
                        Recovered DOUBLE PRECISION
                        )
                        """)

使用复制命令作为

staging_main_covid_table_copy = ("""
                            COPY main_covid_table
                            FROM {}
                            iam_role {}
                            DELIMITER ','
                            IGNOREHEADER 1
                            DATEFORMAT AS 'auto'
                            NULL AS 'NA'
                            """).format(COVID_DATA, IAM_ROLE)

运行脚本后,我从 redshift 得到他的错误:

在此处输入图像描述

我对这个错误的解释是数据类型lastUpdate被用于国家列。有人能帮忙吗?

标签: amazon-web-servicesamazon-redshift

解决方案


据推测,您的错误输出来自STL_LOAD_ERRORS,在这种情况下,倒数第三列定义为:“导致解析错误的字段“colname”的预解析值。”。

因此,它表示 存在问题country,并且试图将其解释为日期。鉴于您提供的定义,这没有意义。事实上,它看起来好像是在尝试将标题行作为数据加载,考虑到IGNOREHEADER 1. 看起来也有列未对齐。

我建议您检查STL_LOAD_ERRORS包括 在内的行中的完整错误详细信息,colname并尝试弄清楚数据发生了什么。您可以从文件中的一行数据开始,看看它是否有效,然后继续添加数据以找出破坏负载的原因。


推荐阅读