aws_s3
从S3导入导出数据的外部数据源包装器
仓库
chimpler/postgres-aws-s3
https://github.com/chimpler/postgres-aws-s3
源码
aws_s3-0.0.1.tar.gz
aws_s3-0.0.1.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
aws_s3 | 0.0.1 | FDW | Apache-2.0 | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8800 | aws_s3 | 否 | 否 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | pg_parquet hdfs_fdw file_fdw duckdb_fdw wrappers pg_bulkload columnar pg_analytics |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.0.1 | 1817161514 | aws_s3 | - |
| RPM | PIGSTY | 0.0.1 | 1817161514 | aws_s3_$v | - |
| DEB | PIGSTY | 0.0.1 | 1817161514 | postgresql-$v-aws-s3 | - |
构建
您可以使用 pig build 命令构建 aws_s3 扩展的 RPM / DEB 包:
pig build pkg aws_s3 # 构建 RPM / DEB 包
安装
您可以直接安装 aws_s3 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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;
用法
设置凭证
通过 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 等)