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

Redshift COPY命令导入CSV时BIGINT列报错的解决方案咨询

解决Redshift COPY导入CSV时的BIGINT类型转换错误

错误原因

你遇到的ERROR:Invalid digit, Value 'a', Pos 0, Type: Long错误,是因为S3存储的CSV文件中,col1列存在无法转换为BIGINT类型的非数字值(比如字符'a'),Redshift默认会严格校验数据类型转换,转换失败就抛出错误。

解决方案

1. 显式指定列类型并处理无效值

在COPY命令的列列表中直接标注col1的类型为BIGINT,同时结合参数处理无效值:

COPY "database"."schema"."table" (
  col1 BIGINT,
  col2,
  col3,
  col4,
  col5,
  col6
)
FROM 's3-path'
IAM_ROLE 'arn-role-with-command-access-role-policy'
CSV
NULL AS 'a' -- 将值为'a'的记录转为NULL,可根据实际无效值调整
BLANKSASNULL; -- 把空字符串转为NULL,适配空值场景

2. 允许少量错误行排查问题

如果不确定所有无效值的格式,可以先设置MAXERROR允许一定数量的错误行,先导入有效数据并查看错误详情:

COPY "database"."schema"."table" (
  col1 BIGINT,
  col2,
  col3,
  col4,
  col5,
  col6
)
FROM 's3-path'
IAM_ROLE 'arn-role-with-command-access-role-policy'
CSV
MAXERROR 20; -- 允许最多20条错误行,可根据数据量调整

3. 替换无效字符(可选)

如果存在其他非数字的无效字符,可添加ACCEPTINVCHARS参数,将无效字符替换为?后继续导入:

COPY "database"."schema"."table" (
  col1 BIGINT,
  col2,
  col3,
  col4,
  col5,
  col6
)
FROM 's3-path'
IAM_ROLE 'arn-role-with-command-access-role-policy'
CSV
ACCEPTINVCHARS
BLANKSASNULL;

额外建议

先检查S3中的CSV文件,确认col1列的无效值具体是什么(比如表头字符串、特殊符号等),再针对性选择参数处理,能更高效解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:55:18