将 gzip 文件从 s3 提取到 Postgres 用于编码的无效字节序列 "UTF8"

ingesting gzip file from s3 to Postgres invalid byte sequence for encoding "UTF8"

我在 S3 中有一个 data.csv.gz 文件,其中某些行包含特殊字符: 该文件也没有 headers,但我在 Postgres table 中创建了列名。当我检查 S3 中的元数据时,类型是 Content-Type: binary/octet-stream

这是我看到的错误:

psycopg2.errors.InternalError_: invalid byte sequence for encoding "UTF8": 0x8b

这就是我正在做的造成错误的原因:

SELECT aws_s3.table_import_from_s3(
'btr.Ats_20210304',
'ID,NAME,WEBSITE,TYPE,CATEGORY,SUB_CATEGORY,PARENT_ACCOUNT',
'(FORMAT csv, HEADER true, DELIMITER ",")',
'vdw-dev',
'date/hourly/data_0_0_0.csv.gz',
'us-east-1');

我已经使用 SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'my_db'; 检查了 postgres table 的编码,它被设置为 UTF8。

查看来自 AWS 的文档:Importing an Amazon S3 compressed (gzip) file

您需要确保 S3 文件具有以下 Amazon S3 元数据:

  • 键:Content-Encoding
  • 值:gzip