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

将S3中Parquet文件复制到Redshift时,含逗号列导致失败如何解决?

解决Redshift COPY Parquet文件列数不匹配问题

问题根源

报错代码15007的直接原因是Redshift目标表列数(20)与Parquet文件列数(21)不匹配,和column_16里的逗号无关——Parquet是二进制列式存储,不会把逗号识别为列分隔符,你之前用的ACCEPTINVCHARS参数只适用于CSV等文本格式,对Parquet无效。

解决方案

1. 确认Parquet文件的完整列结构

可以通过两种方式查看Parquet文件的列:

  • 用AWS Glue Crawler扫描S3路径,生成表结构后查看所有列;
  • 在Redshift中创建外部表指向该S3路径,再查询系统视图获取列信息:
CREATE EXTERNAL SCHEMA spectrum_schema
FROM DATA CATALOG
DATABASE 'your_db'
IAM_ROLE 'iam_role';

CREATE EXTERNAL TABLE spectrum_schema.parquet_table
STORED AS PARQUET
LOCATION 's3://path/to/parquetfiles/';

SELECT * FROM SVV_EXTERNAL_COLUMNS WHERE schemaname = 'spectrum_schema' AND tablename = 'parquet_table';

2. 调整加载逻辑匹配列数

根据实际需求选一种方式:

  • 方式一:修改Redshift目标表结构:添加Parquet文件中多出来的那列,确保列名、数据类型和Parquet文件对应;
  • 方式二:COPY时指定要加载的列:跳过Parquet中多余的列,只加载目标表存在的20列,命令示例:
COPY schema.table_name (col1, col2, ..., column_16, ..., col20)
FROM 's3://path/to/parquetfiles/'
IAM_ROLE 'iam_role'
FORMAT AS PARQUET;

3. 确保column_16数据原样加载

Parquet格式会完整保留字符串内容(包括逗号),只要列名和数据类型匹配,无需额外参数就能原样导入Redshift。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:50:26