aws_s3

从S3导入导出数据的外部数据源包装器

概览

扩展包名版本分类许可证语言
aws_s30.0.1FDWApache-2.0SQL
ID扩展名BinLibLoadCreateTrustReloc模式
8800aws_s3-
相关扩展pg_parquet hdfs_fdw file_fdw duckdb_fdw wrappers pg_bulkload columnar pg_analytics

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.0.11817161514aws_s3-
RPMPIGSTY0.0.11817161514aws_s3_$v-
DEBPIGSTY0.0.11817161514postgresql-$v-aws-s3-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
u22.x86_64
u22.aarch64
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
u24.x86_64
u24.aarch64
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1
PIGSTY 0.0.1

构建

您可以使用 pig build 命令构建 aws_s3 扩展的 RPM / DEB 包:

pig build pkg aws_s3         # 构建 RPM / DEB 包

安装

您可以直接安装 aws_s3 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install aws_s3;          # 当前活跃 PG 版本安装
pig ext install -y aws_s3 -v 18  # PG 18
pig ext install -y aws_s3 -v 17  # PG 17
pig ext install -y aws_s3 -v 16  # PG 16
pig ext install -y aws_s3 -v 15  # PG 15
pig ext install -y aws_s3 -v 14  # PG 14
dnf install -y aws_s3_18       # PG 18
dnf install -y aws_s3_17       # PG 17
dnf install -y aws_s3_16       # PG 16
dnf install -y aws_s3_15       # PG 15
dnf install -y aws_s3_14       # PG 14
apt install -y postgresql-18-aws-s3   # PG 18
apt install -y postgresql-17-aws-s3   # PG 17
apt install -y postgresql-16-aws-s3   # PG 16
apt install -y postgresql-15-aws-s3   # PG 15
apt install -y postgresql-14-aws-s3   # PG 14

创建扩展

CREATE EXTENSION aws_s3;

用法

aws_s3: 从 S3 导入/导出数据的 PostgreSQL 扩展

设置凭证

通过 PostgreSQL 会话变量配置 AWS 凭证:

SET aws_s3.access_key_id TO 'your_access_key';
SET aws_s3.secret_key TO 'your_secret_key';
SET aws_s3.session_token TO 'optional_session_token';  -- 使用临时凭证时

本地开发使用 LocalStack:

SET aws_s3.endpoint_url TO 'http://localhost:4566';

从 S3 导入数据

CREATE EXTENSION aws_s3;

CREATE TABLE animals (
  name text,
  age int
);

SELECT aws_s3.table_import_from_s3(
  'animals',
  '',
  '(FORMAT CSV, DELIMITER '','', HEADER true)',
  'my-bucket',
  'animals.csv',
  'us-east-1'
);

SELECT * FROM animals;

参数: 表名、列列表(空字符串表示全部)、COPY 选项、S3 桶名、S3 键名、AWS 区域。

导出数据到 S3

SELECT * FROM aws_s3.query_export_to_s3(
  'SELECT * FROM animals',
  'my-bucket',
  'export/animals.csv',
  'us-east-1',
  options := 'FORMAT CSV, HEADER true'
);

参数: SQL 查询、S3 桶名、S3 键名、AWS 区域、COPY 选项。

特性

  • 带有 Content-Encoding=gzip 元数据的文件在导入时自动解压
  • 凭证可以作为函数参数直接传递或通过会话变量设置
  • 使用与 PostgreSQL 相同的 COPY 格式选项(CSV、TEXT、BINARY,以及所有相关设置如 DELIMITER、HEADER、NULL 等)

最后修改 2026-03-14: update extension metadata (953cbd0)