跳转到主要内容

pg_lake_copy

在 PostgreSQL 与对象存储数据湖文件之间执行 COPY 的扩展

概览

扩展包名版本分类许可证语言
pg_lake3.5OLAPApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
2560pg_lake是是是是否否lake
2561pg_extension_base否是是是否否extension_base
2562pg_extension_updater否是是是否否extension_updater
2563pg_map否是否是否否map_type
2564pg_lake_engine否是是是否否__lake__internal__nsp__
2565pg_lake_iceberg否是否是否否lake_iceberg
2566pg_lake_table否是是是否否__pg_lake_table_writes
2567pg_lake_copy否是是是否否pg_catalog

pkg 3.5.9; SQL 3.5; auto-loaded by pg_extension_base in dependency order.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY3.51817161514pg_lakepg_lake_engine, pg_lake_iceberg, pg_lake_table
RPMPIGSTY3.5.91817161514pg_lake_$v-
DEBPIGSTY3.5.91817161514postgresql-$v-pg-lake-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/AN/AN/A
el8.aarch64N/AN/AN/AN/AN/A
el9.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
el9.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
el10.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
el10.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
d12.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
d12.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
d13.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
d13.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u22.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u22.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u24.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u24.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u26.x86_64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A
u26.aarch64PIGSTY 3.5.9PIGSTY 3.5.9PIGSTY 3.5.9N/AN/A

构建

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

pig build pkg pg_lake         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install pg_lake;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_lake -v 18  # PG 18
pig ext install -y pg_lake -v 17  # PG 17
pig ext install -y pg_lake -v 16  # PG 16
dnf
dnf install -y pg_lake_18       # PG 18
dnf install -y pg_lake_17       # PG 17
dnf install -y pg_lake_16       # PG 16
apt
apt install -y postgresql-18-pg-lake   # PG 18
apt install -y postgresql-17-pg-lake   # PG 17
apt install -y postgresql-16-pg-lake   # PG 16

预加载配置:

shared_preload_libraries = 'pg_extension_base';

创建扩展:

CREATE EXTENSION pg_lake_copy CASCADE;  -- 依赖: pg_lake_engine, pg_lake_iceberg, pg_lake_table

用法

来源:

pg_lake_copy 扩展了 PostgreSQL COPY,使得查询、堆表、外部湖表和 Iceberg 表可以与本地路径、HTTP 端点以及配置的对象存储交换 Parquet、CSV 或换行符分隔的 JSON 文件。它通过钩子添加行为,并没有独立的 SQL 函数 API。

pg_lake 发布与软件包版本为 3.5.3,SQL 扩展版本为 3.5。动态库与查询服务器应使用同一发布版本。

启用组件

正常的入口点会一起安装 pg_lake_copy 及其精确依赖项:

CREATE EXTENSION pg_lake CASCADE;

它的控制文件需要 pg_lake_engine、pg_lake_iceberg 和 pg_lake_table。部署时还须将 pg_extension_base 加入 shared_preload_libraries,并启动 pgduck_server。

导出和导入

格式可以从路径后缀推断或显式选择:

COPY (
    SELECT event_id, event_time, payload
    FROM events
    WHERE event_time >= DATE '2026-07-01'
)
TO 's3://analytics-bucket/events/july.parquet'
WITH (format 'parquet');

COPY events_archive
FROM 's3://analytics-bucket/events/july.parquet'
WITH (format 'parquet');

CSV 与压缩输出使用湖写入器扩展的 COPY 选项:

COPY (SELECT * FROM daily_summary)
TO 's3://analytics-bucket/summary/daily.csv.gz'
WITH (format 'csv', header true, compression 'gzip');

目标可以是 PostgreSQL 堆表或 Iceberg 表;源也可以是安装的 pg_lake 堆栈支持的任何查询。

格式和运行时边界

  • Parquet 是列式的,并保留了受支持的数据类型值;CSV 和换行符分隔的 JSON 有特定格式的推断和转换选项,这些选项在上游文档中有所说明。
  • 对象存储访问通过 pgduck_server 进行。其凭据链、网络访问以及桶权限必须允许请求的读取或写入。
  • COPY 是一个语句,并参与外围的 PostgreSQL 事务,但远程文件和清理也依赖于 pg_lake 事务/队列机制。在重试大规模导出之前,请检查失败的操作和孤儿清理。
  • 版本 3.5 没有为 pg_lake_copy 新增独立 SQL API;从 3.4 到 3.5 的迁移脚本为空。COPY 行为仍取决于匹配的湖扩展动态库和查询服务器二进制。

这个页面对您有帮助吗?