PostgreSQL
本节介绍如何使用 PostgreSQL 目标连接器配置与 PostgreSQL 目标的连接。PostgreSQL 只能在复制任务中用作目标。在连接到 PostgreSQL 目标之前,您需要在数据库上配置 所需的权限。如果您通过 数据移动网关 连接到 PostgreSQL,还需要安装驱动程序设置中所述的驱动程序。
有关使用 PostgreSQL 连接器时的限制和注意事项的信息,请参阅限制和考虑事项。
设置连接属性
要配置连接器,请执行以下操作:
-
在连接中单击创建连接。
-
选择 PostgreSQL 目标连接器,然后提供以下设置:
数据目标
-
数据网关:当使用数据移动网关时,选择将用于测试与 MySQL 目标的连接的数据网关。这应该是用于访问数据源的同一网关。
信息注释- 此字段不适用于 Qlik Talend Cloud Starter 订阅,因为此订阅层不支持 数据移动网关。
-
您还需要在 数据移动网关 计算机上安装相应的驱动程序。有关详细信息,请参阅下文的驱动程序设置。
-
云提供者:根据需要选择以下项之一:
-
无 - 使用时选择:
- 内部 PostgreSQL
- Amazon Aurora
- Azure Database for PostgreSQL - Flexible Server
- 无 数据移动网关
-
Amazon RDS
对于 Amazon RDS for PostgreSQL。
-
Google Cloud - 使用时选择:
- Google Cloud SQL for PostgreSQL
- Google Cloud AlloyDB for PostgreSQL
-
Microsoft Azure
对于 Microsoft Azure Database for PostgreSQL。
-
-
主机:安装 PostgreSQL 数据库的计算机的主机名或 IP 地址。
-
端口:连接到数据库时要使用的端口。默认值为 5432。
帐户属性
用户名称和密码:经授权可访问 PostgreSQL Server 数据库的用户的用户名和密码。
数据库属性
-
数据库名称:有两种方法可以用于指定数据库:
- 方法 1 - 从列表中选择:单击加载数据库,然后选择一个数据库。
- 方法 2 - 手动:选择手动输入数据库名称,然后输入数据库名称。
- SSL 模式:选择以下选项之一:
- 禁用 - 仅使用姓氏和密码连接。
- 允许 - 如果服务器请求,则建立加密连接。
- 优选 - 这是默认设置。Preferred - 如果服务器支持加密连接,则建立加密连接,如果无法建立加密连接则返回到未加密连接。
- Required - 如果服务器支持加密连接,则建立加密连接。如果无法建立加密连接,则连接尝试失败。
- Verify CA - 类似于 Required,但也根据配置的 CA 证书验证服务器证书机构 (CA) 证书。如果找不到有效的匹配 CA 证书,则连接尝试失败。
- Verify Full - 类似于 Verify CA,但也通过对比服务器发送到客户端的证书中的身份,检查客户端用来连接到服务器的主机名(即 Qlik Talend Data Integration)。客户端检查用于连接的主机名是否与服务器证书中的“公用名”值匹配。如果不匹配,连接将失败。
- 可信证书:颁发 PEM 格式客户端证书文件的证书机构 (CA)。
- 客户端证书:上传服务器请求的客户端证书。
- 客户端证书密钥:PEM 格式的客户端私钥文件。
- CRL:CRL 证书。此文件包含证书颁发机构吊销的证书。如果服务器证书出现在此列表中,则连接将失败。
- SSL 压缩:选择此选项可在数据加密之前对其进行压缩。
- 最大文件大小 (KB):在将 CSV 文件加载到 PostgreSQL 目标数据库之前,选择或键入其最大大小(以 KB 为单位)。默认值为 32000 KB。
内部属性
内部属性用于特殊用例,因此不会在对话框中公开。只有在 Qlik 支持部门的指示下,您才应该使用它们。
使用字段右侧的 和 按钮可以根据需要添加或删除特性。
名称
连接的显示名称。
先决条件
所需的权限
连接器设置中指定的用户必须是 PostgreSQL 数据库中的注册用户。
此外,还必须授予以下权限:
- 可以登录
- 创建数据库
驱动程序设置
您可以使用驱动程序安装实用程序(推荐)安装 driver 或手动安装。只有在您遇到驱动程序安装实用程序发生问题的少见情况下,才应尝试手动安装。
使用驱动程序安装实用程序安装驱动程序
本部分介绍如何安装所需的 driver。这个过程包括运行一个脚本,该脚本将自动下载、安装和配置所需的 driver。您还可以根据需要运行脚本来更新和卸载 driver。
准备安装
-
请确保在 数据移动 网关服务器上安装了 Python 3.6 或更高版本。
Python 预装在大多数 Linux 发行版上。您可以通过运行以下命令来检查系统上安装了哪个 Python 版本。
python3 --version
安装 driver
下载并安装 driver :
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./install postgres
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 install postgres 命令。
否则,将显示 driver 的 EULA。
-
执行以下操作之一:
- 重复按 [Enter] 可在 EULA 中缓慢滚动。
- 重复按空格键可快速滚动 EULA。
- 按 q 退出许可证文本并显示 EULA 接受选项。
-
执行以下操作之一:
- 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
- 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
-
键入“v”并按 [Enter] 以再次查看 EULA。
将会安装 driver。
更新 driver
如果要在安装提供的 driver 之前卸载以前版本的 driver,请运行 update 命令。
下载并更新 driver:
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./update postgres
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 update postgres 命令。
否则,将显示 driver 的 EULA。
-
执行以下操作之一:
- 重复按 [Enter] 可在 EULA 中缓慢滚动。
- 重复按空格键可快速滚动 EULA。
- 按 q 退出许可证文本并显示 EULA 接受选项。
-
执行以下操作之一:
- 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
- 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
- 键入“v”并按 [Enter] 可从头开始查看 EULA。
将卸载旧的 driver,并安装新的 driver。
卸载 driver
如果要卸载 driver,请运行 uninstall 命令。
卸载 driver:
-
停止所有配置为使用此连接器的任务。
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./uninstall postgres
将卸载 driver。
手动安装驱动程序和库
只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver。
安装 数据移动网关 后,下载以下 RPM 文件。您可以在 /opt/qlik/gateway/movement/drivers/manifests/postgres.yaml 中找到 binary-artifacts 下文件的直接下载链接。下载完成后,将文件复制到 数据移动网关 机器上。
在 Red Hat 9.x 上安装 数据移动网关 时:
- postgresql<version>-libs-<version>PGDG.rhel9.x86_64.rpm
- postgresql<version>-<version>PGDG.rhel9.x86_64.rpm
- postgresql<version>-odbc-<version>PGDG.rhel9.x86_64.
在 Red Hat 8.x 上安装 数据移动网关 时:
- postgresql<version>-libs-<version>PGDG.rhel8.x86_64.rpm
- postgresql<version>-<version>PGDG.rhel8.x86_64.rpm
- postgresql<version>-odbc-<version>PGDG.rhel8.x86_64.rpm
在 数据移动网关 服务器上,打开 shell 提示符并执行以下操作:
-
停止 数据移动网关 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
-
安装 RPM 文件。
-
将工作目录更改为 <数据移动网关_Install_Dir>/bin.
-
如下将驱动程序位置复制到 site_arep_login.sh 文件:
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh
这将把驱动程序添加到 "LD_LIBRARY_PATH" 并更新 site_arep_login.sh 文件中的驱动程序位置。
-
可选择确认已将驱动程序位置复制:
cat site_arep_login.sh
-
确保 /etc/odbcinst.ini 文件包含 PostgreSQL 的条目,如以下示例所示:
[PostgreSQL]
Description = PostgreSQL ODBC driver
Driver = /usr/pgsql-13/lib/psqlodbc.so
Setup = /usr/pgsql-13/lib/psqlodbcw.so
UsageCount = 1
-
启动 数据移动网关 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> ago
限制和考虑事项
当使用 PostgreSQL 作为复制目标时,以下限制适用:
- 不支持对没有包含重复记录的主键/唯一索引的表执行 UPDATE 和 DELETE 操作。对这些表的任何更改都将影响目标中的所有记录。
- 在批处理优化应用模式下,不支持键中包含 LOB 列的表。当 VARBINARY 列用作源表键时,将在目标中创建 BYTEA 列。这会导致“批量优化应用”模式中出现不可预测的行为。作为一种变通方法,我们建议使用 SQLite HEX 函数将 VARBINARY 转换为 VARCHAR。
数据类型
本机数据类型信息将被保留,并显示在数据集视图的本机数据类型列中。如果列不可见,则需要打开数据集视图的列选择器,然后选择本机数据类型列。
Qlik Cloud 数据类型 | PostgreSQL 数据类型 |
---|---|
BOOL |
BOOL |
BYTES |
BYTEA |
DATE |
DATE |
TIME |
TIME |
DATETIME |
如果刻度 => 0 且 =< 6,那么: TIMESTAMP 如果刻度 => 7 且 =< 12,那么: VARCHAR (37) |
INT1 |
SMALLINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
DECIMAL (p,s) |
REAL4 |
FLOAT4 |
REAL8 |
FLOAT8 |
STRING |
如果长度为 1 - 21845,则为: VARCHAR(以字节为单位的长度 = STRING 值乘以三) 如果长度为 21846 - 2147483647,则为: varchar(65535) |
UINT1 |
SMALLINT |
UINT2 |
INTEGER |
UINT4 |
BIGINT |
UINT8 |
BIGINT |
WSTRING |
如果长度为 1 - 21845,则为: VARCHAR(以字节为单位的长度 = WSTRING 值乘以三) 如果长度为 21846 - 2147483647,则为: varchar(65535) |
BLOB |
BYTEA |
NCLOB |
TEXT |
CLOB |
TEXT |
从 PostgreSQL 源复制时的数据类型
从 PostgreSQL 源复制时,除了具有用户定义或 PostGIS 数据类型的列外,将为所有列创建具有相同数据类型的目标表。在这种情况下,数据类型将在目标中创建为“变化字符”。