You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift导入Parquet数据报错求助:Decimal类型无效指数'e'

问题分析与解决方案

核心问题:COPY命令参数配置错误

你当前的COPY命令是按照CSV格式设置的(指定了delimiter ','、IGNOREHEADER 1),但源文件是Parquet格式——Redshift处理Parquet需要专门的格式声明,这些CSV相关参数会打乱解析逻辑,直接引发后续的数据类型错误。

报错含义拆解

  • ERROR:Invalid digit, Value '.', Pos 0, Type: Double:Redshift被迫按CSV规则解析Parquet数据,把某个以小数点开头的内容当作Double类型值解析,不符合数字格式规范,导致失败。
  • ERROR:Invalid exponent, Value 'e', Pos 187, Type: Decimal:改成numeric类型后,解析逻辑还是错的,Parquet里的科学计数法数值(带'e')被当成普通Decimal值解析,而Decimal默认不识别科学计数法格式,所以报错。

正确的COPY命令写法

移除所有CSV相关参数,添加Parquet格式声明:

COPY table_name 
FROM 's3://bucket/folder/file_name.parquet'
credentials 'aws_iam_role=...'
NULL AS 'NULL'
EMPTYASNULL
region 'region_name'
FORMAT AS PARQUET;

额外排查建议

如果调整命令后仍有类型报错,按以下步骤定位问题:

  • 重新用AWS Glue Crawler爬取Parquet文件,确认生成的表结构和Parquet实际数据类型完全匹配(比如Parquet的float对应Redshift的double,decimal类型要注意精度和小数位一致)。
  • 用aws s3 cp命令下载部分Parquet样本到本地,用Pandas、Parquet Viewer等工具查看具体列的数值,检查是否有异常值(比如数值列里混入了字符串)。
  • 在COPY命令里添加LOG 's3://bucket/log_path/'参数,启用错误日志,通过日志文件查看具体错误行和对应列,精准定位问题列。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:22:01