Postgres
本页指导您设置 Postgres 目标连接器。
从版本 3.0.0 开始,Postgres 目标使用 直接加载 架构。这意味着数据直接写入最终表,而无需使用中间的原始表,从而提高性能并降低存储成本。
有关迁移详情和向后兼容性选项,请参阅 Postgres 迁移指南。
警告
Postgres 虽然是一个优秀的关联数据库,但不是数据仓库。请仅考虑将 Postgres 用作小数据量(例如小于 10GB)或用于测试目的的目标。对于更大的数据量,我们建议使用 BigQuery、Snowflake 或 Redshift 等数据仓库。了解更多 此处。
先决条件
要使用 Postgres 目标,您需要
- Postgres 服务器版本 9.5 或更高版本
Airbyte Cloud 仅支持使用 SSL 或 TLS 加密连接到您的 Postgres 实例。TLS 默认使用。除此之外,您可以按照以下开源说明进行操作。
您需要以下信息来配置 Postgres 目标
- 主机 - 服务器的主机名。
- 端口 - 服务器正在侦听的端口号。默认值为 PostgreSQL™ 标准端口号 (5432)。
- 用户名
- 密码
- 默认模式名称 - 指定要在 search-path 中设置的模式(或用逗号分隔的多个模式)。这些模式将用于解析在此连接上执行的语句中使用的未限定的对象名称。
- 数据库 - 数据库名称。默认情况下,连接到与用户名同名的数据库。
- JDBC URL 参数 (可选)
配置网络访问
确保您的 Postgres 数据库可以被 Airbyte 访问。如果您的数据库位于 VPC 内,您可能需要允许来自您用于暴露 Airbyte 的 IP 的访问。
步骤 1:设置 Postgres
权限
您需要一个具有以下权限的 Postgres 用户
- 可以创建表并写入行。
- 可以创建模式,例如
您可以通过运行来创建这样的用户
CREATE USER airbyte_user WITH PASSWORD '<password>';
GRANT CREATE, TEMPORARY ON DATABASE <database> TO airbyte_user;
您也可以使用预先存在的用户,但我们强烈建议为 Airbyte 创建一个专用用户。
步骤 2:在 Airbyte 中设置 Postgres 连接器
目标数据库
您需要选择一个现有的数据库或创建一个将用于存储 Airbyte 同步数据的新数据库。
命名约定
-
SQL 标识符和关键字必须以字母(a-z,但也包括带有变音符号的字母和非拉丁字母)或下划线 (_) 开头。
-
标识符或关键字的后续字符可以是字母、下划线、数字 (0-9) 或美元符号 ($)。
请注意,美元符号在 SQL 标准中不允许在标识符中使用,因此使用它们可能会使应用程序的可移植性降低。SQL 标准不会定义包含数字或以下划线开头或结尾的关键字,因此这种形式的标识符可以安全地用于未来的标准扩展。
-
系统最多使用 NAMEDATALEN-1 个字节的标识符;可以写入更长的名称,但它们将被截断。默认情况下,NAMEDATALEN 为 64,因此最大标识符长度为 63 个字节
-
带引号的标识符可以包含任何字符,但不能包含代码为零的字符。(要包含双引号,请写入两个双引号。)这允许构造否则不可能的表或列名,例如包含空格或和号的名称。长度限制仍然适用。
-
引用标识符也使其区分大小写,而未引用的名称始终折叠为小写。
-
为了使您的应用程序更具可移植性和更不易出错,请始终如一地引用每个名称(要么始终引用它,要么从不引用它)。
Airbyte Postgres 目标使用带引号的标识符创建最终表及其相应的列,从而保留区分大小写。特殊字符在表和列名称中将被替换为下划线。
当使用遗留“仅原始表”模式时,原始表和模式将使用未引用的标识符创建,方法是将任何特殊字符替换为下划线。
对于 Airbyte Cloud
- 登录到您的 Airbyte Cloud 账户。
- 在左侧导航栏中,单击 目标。在右上角,单击 新建目标。
- 在设置目标页面上,输入 Postgres 连接器的名称,然后从“目标类型”下拉菜单中选择 Postgres。
- 为您的源输入名称。
- 对于 主机、端口 和 数据库名称,输入您的 Postgres 数据库的主机名、端口号和名称。
- 列出 默认模式。
模式名称区分大小写。“public”模式默认设置。可以一次使用多个模式。未显式设置模式 - 将同步所有现有模式。
-
对于 用户 和 密码,输入您在 步骤 1 中创建的用户名和密码。
-
对于 Airbyte 开源,切换开关以使用 SSL 连接。对于 Airbyte Cloud,默认使用 SSL。
-
对于 SSL 模式,选择
- 禁用 以禁用 Airbyte 和源之间的加密通信
- 允许 仅在源需要时启用加密通信
- 首选 仅允许在源不支持加密时进行未加密通信
- 需要 始终需要加密。注意:如果源不支持加密,则连接将失败。
- 验证 CA 始终需要加密并验证源是否具有有效的 SSL 证书
- 验证完整性 始终需要加密并验证源的身份
-
要超越常用选项自定义 JDBC 连接,请在“JDBC URL 参数(高级)”字段中,指定其他支持的 JDBC URL 参数,这些参数应为键值对,用符号 & 分隔。
示例:key1=value1&key2=value2&key3=value3
这些参数将添加到 AirByte 用于连接到您的 Postgres 数据库的 JDBC URL 的末尾。
该连接器现在支持
connectTimeout,默认值为 60 秒。将 connectTimeout 设置为 0 秒会将超时设置为最长可用时间。注意: 请勿在 JDBC URL 参数字段中使用以下键,因为它们将被 Airbyte 覆盖:
currentSchema、user、password、ssl和sslmode。
这是一个高级配置选项。建议用户谨慎使用。
-
对于 SSH 隧道方法,请选择
- 无隧道 以直接连接到数据库
- SSH 密钥身份验证 以使用 RSA 私钥作为您的密钥来建立 SSH 隧道
- 密码身份验证 以使用密码作为您的密钥来建立 SSH 隧道
由于 Airbyte Cloud 需要加密通信,因此如果您选择了 禁用、允许 或 首选 作为 SSL 模式,请选择 SSH 密钥身份验证 或 密码身份验证;否则,连接将失败。
- 点击 设置目标地址。
支持的同步模式
Postgres 目标连接器支持以下同步模式
| 功能 | 支持?(是/否) | 备注 |
|---|---|---|
| 完全刷新同步 | 是 | |
| 增量 - 追加同步 | 是 | |
| 增量 - 追加 + 去重 | 是 | |
| 命名空间 | 是 |
Schema map
输出 Schema (Direct Load)
Postgres 目标使用 Direct Load 架构。每个流直接写入配置架构中的最终表。该表包括您的数据列以及以下 Airbyte 元数据列
_airbyte_raw_id:Airbyte 分配给每个处理事件的 uuid。Postgres 中的列类型为VARCHAR。_airbyte_extracted_at:时间戳,表示从数据源提取事件的时间。Postgres 中的列类型为TIMESTAMP WITH TIME ZONE。_airbyte_meta:jsonb 列,包含有关记录的元数据,包括同步信息和任何架构更改。Postgres 中的列类型为JSONB。_airbyte_generation_id:同步生成的标识符。Postgres 中的列类型为BIGINT。
输出 Schema (Raw Tables) - 已弃用
从版本 3.0.0 开始,Raw 表已被弃用。该连接器现在使用 Direct Load 直接写入最终表。有关向后兼容性选项和迁移指南,请参阅 Postgres 迁移指南。
旧版 Raw Tables 文档
每个流将被映射到 Postgres 中的一个单独的 raw 表。raw 表创建的默认架构是 airbyte_internal。这可以在配置中被覆盖。每个表将包含 3 列
_airbyte_raw_id:Airbyte 分配给每个处理事件的 uuid。Postgres 中的列类型为VARCHAR。_airbyte_extracted_at:时间戳,表示从数据源提取事件的时间。Postgres 中的列类型为TIMESTAMP WITH TIME ZONE。_airbyte_loaded_at:时间戳,表示将行处理到最终表的时间。Postgres 中的列类型为TIMESTAMP WITH TIME ZONE。_airbyte_data:json blob,表示事件数据。Postgres 中的列类型为JSONB。
最终表数据类型映射
| Airbyte 类型 | Postgres 类型 |
|---|---|
| 字符串 | VARCHAR |
| 数字 | DECIMAL |
| 整数 | BIGINT |
| 布尔值 | BOOLEAN |
| 对象 | JSONB |
| array | JSONB |
| timestamp_with_timezone | TIMESTAMP WITH TIME ZONE |
| timestamp_without_timezone | TIMESTAMP |
| time_with_timezone | TIME WITH TIME ZONE |
| time_without_timezone | TIME |
| 日期 | DATE |
命名限制
Postgres 将所有标识符限制为 63 个字符或更少。如果您的流包含长度超过 63 个字符的列名,它们将被截断为该长度。如果这导致两个列具有相同的名称,Airbyte 可能会修改这些列名以避免冲突。
创建依赖对象
本节涉及对 Airbyte 生成的表运行 DROP ... CASCADE。请确保您完全了解后果后再启用此选项。使用此选项可能会导致永久数据丢失!
您可能需要创建依赖于 Airbyte 生成的表的对象,例如视图。如果是这样,我们强烈建议
- 使用像
dbt这样的工具来自动化创建 - 并使用编排器来触发
dbt。
这是因为您需要启用“使用 CASCADE 删除表”选项。连接器有时需要重新创建表;如果您创建了依赖对象,Postgres 将要求连接器运行启用了 CASCADE 的 drop 语句。但是,这将导致连接器同时删除依赖对象。因此,您必须有一种从头开始重新创建这些依赖对象的方法。
教程
现在您已设置 Postgres 目标连接器,请查看以下教程
特定于供应商的连接器限制
并非数据库的所有实现或部署都相同。本节列出了基于连接器如何或在哪里部署的特定限制和已知问题。
参考
配置字段参考
变更日志
展开以查看
| 版本 | 日期 | 拉取请求 | 主题 |
|---|---|---|---|
| 3.0.8-rc1 | 2026-01-22 | 71183 | 重构架构实用程序以遵循 CDK 模式。 |
| 3.0.7 | 2026-01-20 | 71745 | 改进有关带有 CASCADE 选项的依赖视图/规则的错误消息指导。 |
| 3.0.6 | 2026-01-06 | 71146 | 修复:在架构更改期间,仅对 DROP COLUMN 应用 CASCADE,而不是 ALTER COLUMN TYPE。 |
| 3.0.5 | 2025-12-12 | 70895 | 更新 CDK 至 0.1.86。 |
| 3.0.5-rc.1 | 2025-12-09 | 70338 | 更新 CDK 至 0.1.86。 |
| 3.0.4 | 2025-12-05 | 70355 | 修复:启用“仅 Raw 表”模式时强制追加模式,绕过 Dedupe 模式以避免错误。 |
| 3.0.3 | 2025-12-04 | 70347 | 修复在 raw 表模式下不存在的列上的索引重创建。 |
| 3.0.2 | 2025-12-04 | 70337 | 重构:将 raw 表模式检查移动到索引创建,以提高代码清晰度。 |
| 3.0.1 | 2025-12-04 | 70326 | 修复在旧版“仅 Raw 表”模式下运行时的 PSQLException。 |
| 3.0.0 | 2025-12-03 | 69846 | 重大变更:引入 Direct Load 架构。数据现在直接写入最终表,而无需使用中间 raw 表,从而提供更高的性能和更低的存储成本。Raw 表已被弃用;如果需要向后兼容性,请使用“仅 Raw 表”选项。 |
| 2.4.7 | 2025-08-29 | 65620 | 无操作发布。 |
| 2.4.7-rc.1 | 2025-08-29 | 65617 | 测试 RC 发布。 |
| 2.4.6 | 2025-08-26 | 63769 | 修复增量同步中同步为 NULL 值的数字列。 |
| 2.4.5 | 2025-04-24 | 58652 | 升级库以进行安全补丁 |
| 2.4.4 | 2025-03-24 | 56355 | 升级到 airbyte/java-connector-base:2.0.1 以兼容 M4。 |
| 2.4.3 | 2025-02-14 | 53686 | 添加选项以使用无约束的 DECIMAL 类型来表示数字列。 |
| 2.4.2 | 2025-01-10 | 51483 | 使用非 root 基础镜像 |
| 2.4.1 | 2024-12-18 | 49885 | 使用基础镜像:airbyte/java-connector-base:1.0.0 |
| 2.4.0 | 2024-08-18 | #45434 | 升级所有依赖项。 |
| 2.3.2 | 2024-08-07 | #43331 | 提升 java CDK。 |
| 2.3.1 | 2024-08-07 | #43363 | 采用最新的 CDK。 |
| 2.3.0 | 2024-07-22 | #41954 | 支持 刷新和可恢复的完全刷新。警告:在升级到此连接器版本之前,您必须升级到平台 0.63.7。 |
| 2.2.1 | 2024-07-22 | #42423 | 无操作。提升到干净的镜像 |
| 2.2.0 | 2024-07-22 | #42423 | 撤销刷新支持 |
| 2.1.1 | 2024-07-22 | #42415 | 修复 PostgresSqlOperations.isOtherGenerationIdInTable 以关闭来自 JdbcDatabase.unsafeQuery 的流 |
| 2.1.0 | 2024-07-22 | #41954 | 支持 刷新和可恢复的完全刷新。警告:在升级到此连接器版本之前,您必须升级到平台 0.63.7。 |
| 2.0.15 | 2024-06-26 | #40554 | 将所有严格加密生产代码转换为 kotlin。 |
| 2.0.14 | 2024-06-26 | #40563 | 将所有测试代码转换为 kotlin。 |
| 2.0.13 | 2024-06-13 | #40159 | 禁用 cascade 时删除失败的配置错误 |
| 2.0.12 | 2024-06-12 | #39388 | 源自动转换为 Kotlin |
| 2.0.11 | 2024-06-10 | #39372 | 修复了函数已存在的错误 |
| 2.0.10 | 2024-05-07 | #37660 | 采用 CDK 0.33.2 |
| 2.0.9 | 2024-04-11 | #36974 | 添加使用 CASCADE 删除的选项 |
| 2.0.8 | 2024-04-10 | #36805 | 采用 CDK 0.29.10 以改进长列名处理 |
| 2.0.7 | 2024-04-08 | #36768 | 采用 CDK 0.29.7 以改进目标状态处理 |
| 2.0.6 | 2024-04-05 | #36620 | 采用 CDK 0.29.3 以使用 Kotlin CDK |
| 2.0.5 | 2024-03-07 | #35899 | 采用 CDK 0.27.3;修复 v1-v2 迁移中区分大小写的表名,_airbyte_meta 在 raw 表中 |
| 2.0.4 | 2024-03-07 | #35899 | 采用 CDK 0.23.18;状态解析中的空安全检查 |
| 2.0.3 | 2024-03-01 | #35528 | 采用 CDK 0.23.11;使用迁移框架 |
| 2.0.2 | 2024-03-01 | #35760 | 标记为已认证,将 PSQL 异常添加到去插值器 |
| 2.0.1 | 2024-02-22 | #35385 | 升级 CDK 至 0.23.0;提前收集所需初始状态 |
| 2.0.0 | 2024-02-09 | #35042 | GA 发布 V2 目标格式。 |
| 0.6.3 | 2024-02-06 | #34891 | 删除 varchar 限制,使用系统默认值 |
| 0.6.2 | 2024-01-30 | #34683 | CDK 升级 0.16.3;修复 slf4j lib 中的依赖关系不匹配 |
| 0.6.1 | 2024-01-29 | #34630 | CDK 升级;在 T+D 查询中使用小写 raw 表。 |
| 0.6.0 | 2024-01-19 | #34372 | 在规范中添加 dv2 标志 |
| 0.5.5 | 2024-01-18 | #34236 | 升级 CDK 至 0.13.1;为查询优化在 raw 表中添加索引 |
| 0.5.4 | 2024-01-11 | #34177 | 添加 DV2 beta 的代码(没有用户可见的更改) |
| 0.5.3 | 2024-01-10 | #34135 | 使用上一个版本中遗漏的已发布 CDK |
| 0.5.2 | 2024-01-08 | #33875 | 更新 CDK 以获取隧道心跳功能 |
| 0.5.1 | 2024-01-04 | #33873 | 安装规范化以启用 DV2 beta |
| 0.5.0 | 2023-12-18 | #33507 | 升级到最新的 CDK;修复 DAT 和测试 |
| 0.4.0 | 2023-06-27 | #27781 | 许可证更新:Elv2 |
| 0.3.27 | 2023-04-04 | #24604 | 支持目标检查点 |
| 0.3.26 | 2022-09-27 | #17299 | 改进严格加密 postgres 目标的错误处理 |
| 0.3.24 | 2022-09-08 | #16046 | 修复缺失的数据库名称 URL 编码 |
| 0.3.23 | 2022-07-18 | #16260 | 防止流量在严格加密版本的 postgres 目标上通过不安全的通道 |
| 0.3.22 | 2022-07-18 | #13840 | 添加了使用不同 SSL 模式和 SSL 证书连接的能力 |
| 0.3.21 | 2022-07-06 | #14479 | 发布 amd64 和 arm64 版本的连接器 |
| 0.3.20 | 2022-05-17 | #12820 | 改进了“检查”操作的性能 |
| 0.3.19 | 2022-04-25 | #12195 | 添加支持其他 JDBC URL 参数输入 |
| 0.3.18 | 2022-04-12 | #11729 | 将 mina-sshd 从 2.7.0 升级到 2.8.0 |
| 0.3.17 | 2022-04-05 | #11729 | 修复了模式名称中的破折号错误 |
| 0.3.15 | 2022-02-25 | #10421 | 重构 JDBC 参数处理 |
| 0.3.14 | 2022-02-14 | #10256 | (未发布) 添加 -XX:+ExitOnOutOfMemoryError JVM 选项 |
| 0.3.13 | 2021-12-01 | #8371 | 修复 ssh 密钥中的不正确的处理 "\n" |
| 0.3.12 | 2021-11-08 | #7719 | 通过基于其字节大小而不是其计数来缓冲记录来改进对宽行的处理 |
| 0.3.11 | 2021-09-07 | #5743 | 添加 SSH 隧道支持 |
| 0.3.10 | 2021-08-11 | #5336 | 目标 Postgres:修复 \u0000(NULL) 值处理 |