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

使用AWS S3 Postgres Extension导入压缩CSV时遇UTF8编码错误

解决AWS S3 Postgres Extension导入GZip压缩CSV时的UTF8编码错误

问题根源

报错ERROR: invalid byte sequence for encoding "UTF8": 0x8b是因为Postgres的aws_s3扩展未识别文件为Gzip压缩格式,直接将二进制压缩数据当作UTF8文本解析。0x8b是Gzip文件的起始魔数,不属于合法UTF8字符,因此触发编码错误。

解决方案

1. 导入时显式指定压缩格式

修改table_import_from_s3的参数,在格式选项中添加compression 'gzip',强制扩展先解压文件再解析CSV内容。修改后的SQL如下:

SELECT aws_s3.table_import_from_s3(
  'public.mytable1', '', '(format csv, header true, compression ''gzip'')',
  aws_commons.create_s3_uri('my-bucket-1', 'my/object/key/part-00000-...-1-c000.csv', 'us-east-1')
);

注意:SQL字符串内的单引号需用两个单引号转义

2. 确认Spark压缩保存的正确性(可选)

确保Spark代码中compression参数明确设置为'gzip',避免变量值错误导致文件未正确压缩:

(
    df.write
    .option("header", True)
    .option("encoding", "UTF-8")
    .mode(mode)
    .csv(s3_uri, compression='gzip')
)

补充说明

S3对象的Content-Encoding标签仅用于告知HTTP客户端如何解压内容,Postgres的aws_s3扩展不会读取该元数据自动处理压缩,必须通过导入参数显式声明压缩类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:50:49