# Teradata

Teradata 僅在 Qlik Talend Cloud 資料複寫專案中可作為目標。此連線使用 Teradata Parallel Transporter (TPT) API 進行資料載入，並使用 ODBC 進行中繼資料查詢、DDL 請求以及取得來自 Teradata 錯誤資料表的資訊。

## 設定連線

在建立複寫工作之前，建立並測試至 Teradata 目標的連線。

1. 在連線中，按一下建立連線。
2. 選擇 Teradata 目標連接器。
3. 輸入[Teradata 連線屬性](https://help.qlik.com/zh-TW/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-TW/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 | 時間 (精確度) |
| DATETIME | TIMESTAMP (精確度) |
| INT1 | BYTEINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | 如果小數位數為 0 到 37，NUMERIC (精確度, 小數位數)。如果小數位數為 38 或更大，則為 VARCHAR (45)。 |
| REAL4 | 浮動Teradata 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 欄位，字元長度預設會乘以三以支援 NLS。這可能會增加產生的 Teradata 欄和列大小。

不支援 Teradata PERIOD 資料類型。

## 限制和考慮事項

* 可用的複寫模式為 完整載入、套用變更 及 儲存變更。
* 對於使用 套用變更 或 儲存變更 的工作，不支援 DDL 作業與自動結構描述演進。此限制不適用於僅限完整載入的任務。
* 在 載入 模式下，目標資料表必須為空白，且不得有次要索引。當工作需要持續進行 DML 處理或並行資料表查詢時，請選取 Stream。

## 相關資訊

* [建立複寫專案](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/data-replication-task.htm)