# Teradata

Teradata 仅在 Qlik Talend Cloud 数据复制项目中可用作目标。该连接使用 Teradata Parallel Transporter (TPT) API 进行数据加载，并使用 ODBC 进行元数据查询、DDL 请求以及获取来自 Teradata 错误表的信息。

## 设置连接

在创建复制任务之前，创建并测试到 Teradata 目标的连接。

1. 在连接中单击创建连接。
2. 选择 Teradata 目标连接器。
3. 输入[Teradata 连接属性](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/teradata-target.htm#ConnectionProperties)中所述的连接属性。
4. 点击测试连接并解决报告的任何错误。
5. 保存连接。

## Teradata 连接属性

为 Teradata 目标连接配置以下属性：

Teradata 目标连接属性

| 部分 | 属性 | 描述 |
| --- | --- | --- |
| 数据目标 | 数据网关（必需） | 选择能够访问 Teradata 服务器且已安装所需 Teradata 客户端组件的数据网关。 |
| 连接属性 | Teradata 服务器（必填） | 输入 Teradata 服务器名称或 IP 地址。确保可从所选数据网关访问该服务器。 |
| 账户属性 | 用户（必填） | 输入 Teradata 数据库用户名。这是数据库凭据，而不是账户字符串。 |
| 密码（必填） | 输入 Teradata 服务器数据库用户的密码。这是数据库凭据，而不是账户字符串。 |  |
| 账户字符串 | 输入 Teradata 数据库管理员分配给该用户的账户字符串。这是数据库服务器登录账户，与 用户 和 密码 凭据不同。 |  |
| 数据库属性 | 手动输入数据库名称 | 选择此选项以输入数据库名称。 |
| 默认数据库（必填） | 输入数据复制到的 Teradata 数据库。数据库必须可供指定用户访问。 |  |
| 加载数据库 | 单击以发现指定用户可用的数据库。该列表取决于连接是否成功以及用户的数据库权限。 |  |
| 其他连接属性 | ODBC 属性 | 以名称和值对的形式输入其他 ODBC 连接属性。请与您的 Teradata 或 ODBC 管理员确认属性名称和值。 |

## 先决条件

在创建目标连接之前，准备该连接所需的 Teradata 环境和访问权限。

* 确保 Teradata 服务器已安装在您的网络中，并且可从运行所选数据网关的计算机访问。
* 在数据网关上安装并配置 Teradata ODBC 驱动程序和必需的 Teradata 客户端组件。请勿假设安装在另一台计算机上的驱动程序可供网关使用。
* 请 Teradata 数据库管理员创建或确定数据库用户，并在需要时提供该用户的密码和账户字符串。

如果您正在根据您的环境调整 Teradata 目标功能，请让 Teradata 数据库管理员验证您的任务是否需要以下权限。除非另有说明，否则这些授权适用于目标数据库；它们不一定是每个 Qlik Talend Cloud 任务的最低权限：

* `GRANT SELECT ON <database>`
* `GRANT INSERT ON <database>`
* `GRANT DELETE ON <database>`
* `GRANT UPDATE ON <database>`
* `GRANT EXECUTE ON <database>`
* `GRANT EXECUTE FUNCTION ON <database>`
* `GRANT EXECUTE PROCEDURE ON <database>`
* `GRANT CREATE TABLE ON <database>`
* `GRANT DROP TABLE ON <database>`
* `GRANT CREATE VIEW ON <database>`
* `GRANT DROP VIEW ON <database>`
* `GRANT NONTEMPORAL ON <database>`
* `GRANT CHECKPOINT ON <database>`

数据库用户可能还需要以下用于数据流处理的权限：

* `GRANT CREATE MACRO ON <database>`

## 提供对 Teradata 数据库的访问权限

在连接的 User 属性中输入的用户必须在 Teradata 数据库中注册为用户。在您配置 Teradata 目标连接和数据库之前，Teradata 数据库管理员必须向该同一用户授予访问权限。在连接的 User 和 Password 属性中使用此注册用户的凭据。

有关所需授权，请参阅[先决条件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/teradata-target.htm#Prerequisites)中的现有授权列表。

## 编辑 hosts 文件

若要使所选数据网关能够访问 Teradata 数据库，请将 Teradata 映射添加到数据网关计算机上的 hosts 文件中。

1. 在所选的数据网关计算机上，打开 Windows 或 Linux hosts 文件。默认路径为：

   * Windows：`~:\Windows\System32\drivers\etc\hosts`
   * Linux：`/etc/hosts`

2. 按以下格式添加 Teradata 映射。在数据库名称后包含 `cop1` 后缀：

   `<Teradata Database IP address/hostname> <Teradata Database name>cop1`

   例如：`123.123.123.1 teradatadbonecop1`

   确保 hosts 文件中的数据库名称与 默认数据库连接属性匹配。

3. 保存更改。

## 排查连接错误

如果连接测试失败，请查看报告的错误并在再次测试连接之前检查以下各项：

* **网关或网络：**确认所选数据网关正在运行，并且能够访问 Teradata 服务器。检查服务器名称或 IP 地址以及网关与服务器之间的任何网络规则。
* **驱动程序或客户端：**确认所选网关上已安装并配置了 Teradata ODBC 驱动程序和所需的客户端组件。安装在本地计算机上的驱动程序不会被远程网关使用。
* **凭据或权限：**与 DBA 确认区分大小写的用户和密码、可选的账户字符串以及所需的数据库权限。
* **数据库发现：**如果加载数据库未返回任何数据库或出现错误，请先测试连通性，然后确认该用户能够发现并访问这些数据库。如适用，您可以通过手动输入数据库名称进入已知数据库。
* **ODBC 属性：**检查每个 名称 和 值 对的拼写、支持的值以及与驱动程序配置的冲突。删除导致连接测试失败的可选属性，或请 ODBC 管理员进行验证。

## 数据类型

下表描述了从 Qlik Talend Cloud 数据类型到 Teradata 数据类型的默认映射。

信息注释

Teradata 不支持在 批量优化应用 模式下对二进制数据类型应用更改。

Teradata 目标数据类型映射

| Qlik Talend Cloud 数据类型 | Teradata 数据类型 |
| --- | --- |
| BOOLEAN | BYTEINT |
| BYTES | VARBYTE (大小)。最大大小为 640,000 字节。 |
| DATE | DATE |
| TIME | TIME（精确度） |
| DATETIME | TIMESTAMP (精确度) |
| INT1 | BYTEINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | 如果小数位数为 0 到 37，则为 NUMERIC (精确度, 小数位数)。如果标度为 38 或更大，则为 VARCHAR (45)。 |
| REAL4 | FLOATTeradata FLOAT 等同于 REAL 和 DOUBLE PRECISION。 |
| REAL8 | FLOAT |
| STRING | VARCHAR (size)，最多 64,000 字节。如果子类型是 JSON，则改用 JSON。 |
| UINT1 | BYTEINT |
| UINT2 | SMALLINT |
| UINT4 | INTEGER |
| UINT8 | BIGINT |
| WSTRING | VARCHAR (size)，最多 640,000 字节。如果子类型是 JSON，则改用 JSON。 |
| BLOB | VARBYTE(${MAX\_LOB\_SIZE})。MAX\_LOB\_SIZE 是为受限大小 LOB 处理指定的最大 LOB 大小。 |
| [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/teradata-target.htm)CLOB | VARCHAR(${MAX\_LOB\_SIZE})，使用 Unicode 不区分大小写的字符集。MAX\_LOB\_SIZE 是为受限大小的 LOB 处理指定的最大 LOB 大小。如果子类型是 JSON，则改用 JSON。 |
| NCLOB | VARCHAR(${MAX\_LOB\_SIZE})，使用不区分大小写的字符集。MAX\_LOB\_SIZE 是为受限大小的 LOB 处理指定的最大 LOB 大小。如果子类型是 JSON，则改用 JSON。 |

信息注释

**LOB 限制：**Teradata 不支持完整的 LOB 数据类型。目标改为使用受限大小的 LOB 映射。Teradata 行的总大小不能超过 64 KB，因此在设置最大 LOB 大小时需包含所有列的大小。

对于 CLOB 和 NCLOB 列，字符长度默认乘以 3 以支持 NLS。这可能会增加生成的 Teradata 列和行大小。

不支持 Teradata PERIOD 数据类型。

## 限制和考虑事项

* 可用的复制模式包括 全量加载、应用更改和 存储更改。
* 对于使用 应用更改 或 存储更改 的任务，不支持 DDL 操作和自动模式演变。此限制不适用于仅全量加载任务。
* 对于 Load 模式，目标表必须为空且不能包含二级索引。当任务需要持续的 DML 处理或并发表查询时，选择 Stream。

## 相关信息

* [创建复制项目](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/data-replication-task.htm)