

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Amazon DynamoDB 資料表載入資料
<a name="t_Loading-data-from-dynamodb"></a>

您可以使用 COPY 命令，從單一 Amazon DynamoDB 資料表載入具有資料的資料表。

**重要**  
除非您使用 [REGION](copy-parameters-data-source-s3.md#copy-region)選項來指定 Amazon DynamoDB 資料表所在的 AWS 區域，否則必須在與叢集相同的 AWS 區域中建立提供資料的 Amazon DynamoDB 資料表。

COPY 命令會使用 Amazon Redshift 大量平行處理 (MPP) 架構，從 Amazon DynamoDB 資料表平行讀取和載入資料。您可以藉由在 Amazon Redshift 資料表上設定配送樣式來善加利用平行處理。如需詳細資訊，請參閱[分配資料以實現查詢最佳化](t_Distributing_data.md)。

**重要**  
當 COPY 命令從 Amazon DynamoDB 資料表讀取資料時，產生的資料傳輸為該資料表佈建的輸送量的一部分。

若要避免耗用過量的佈建的讀取輸送量，建議您不要從位在生產環境中的 Amazon DynamoDB 資料表載入資料。如果您的確從生產資料表載入資料，建議您將 READRATIO 選項設定為低於未使用佈建的輸送量平均百分比。較低的 READRATIO 設定將有助於減少節流問題。若要使用整個佈建的 Amazon DynamoDB 資料表輸送量，請將 READRATIO 設定為 100。

COPY 命令會使用下列規則，將擷取自 DynamoDB 資料表的項目中的屬性名稱，與現有 Amazon Redshift 資料表中的資料欄名稱比對：
+ Amazon Redshift 資料表資料欄與 Amazon DynamoDB 項目屬性為不區分大小寫的比對。如果 DynamoDB 資料表中的項目包含只有大小寫差異的多個屬性，例如 Price 和 PRICE，則 COPY 命令將會失敗。
+ 取決於在 [COPY](r_COPY.md) 命令中搭配 EMPTYASNULL 選項指定的值，不符合 Amazon DynamoDB 資料表中屬性的 Amazon Redshift 資料表資料欄會以 NULL 或空白形式載入。
+ 不符合 Amazon Redshift 資料表中資料欄的 Amazon DynamoDB 屬性則會遭捨棄。屬性是在比對之前讀取，因此即使是捨棄的屬性也會使用資料表佈建的輸送量的一部分。
+ 僅支援具有純量 STRING 和 NUMBER 資料類型的 Amazon DynamoDB 屬性。不支援 Amazon DynamoDB BINARY 和 SET 資料類型。如果 COPY 命令嘗試載入具有不支援資料類型的屬性，命令將會失敗。如果屬性不符合 Amazon Redshift 資料表資料欄，COPY 不會嘗試載入它，也不會引發錯誤。

COPY 命令使用下列語法來從 Amazon DynamoDB資料表載入資料：

```
COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>'
authorization
readratio '<integer>';
```

*授權*的值是存取 Amazon DynamoDB 資料表所需的 AWS 登入資料。如果這些登入資料對應於某個使用者，該使用者必須具備許可能夠 SCAN 和 DESCRIBE 要載入的 Amazon DynamoDB 資料表。

*授權*值提供叢集存取 Amazon DynamoDB 資料表所需的 AWS 授權。許可必須包含要載入之 Amazon DynamoDB 資料表的 SCAN 和 DESCRIBE。如需所需許可的相關資訊，請參閱[COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions)。身分驗證的偏好方法是指定 IAM\$1ROLE 參數，並提供 IAM 角色的 Amazon Resource Name (ARN) 所需的許可。如需詳細資訊，請參閱[角色類型存取控制](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based)。

若要使用 IAM\$1ROLE 參數進行驗證，*<aws-account-id>* 和 *<role-name>* 如下列語法所示。

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```

下列範例顯示使用 IAM 角色進行身分驗證。

```
COPY favoritemovies 
FROM 'dynamodb://ProductCatalog'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

如需其他授權選項的相關資訊，請參閱[授權參數](copy-parameters-authorization.md)

如果想要驗證您的資料而不實際載入資料表，請使用 NOLOAD 選項搭配 [COPY](r_COPY.md) 命令。

下列範例會從 DynamoDB 資料表 my-favorite-movies-table 載入具有資料的 FAVORITEMOVIES 資料表。讀取活動可能耗用最多 50% 的佈建輸送量。

```
COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
READRATIO 50;
```

為了讓輸送量達到最大，COPY 命令會跨叢集中的運算節點，從 Amazon DynamoDB 資料表平行載入資料。

## 具備自動壓縮的佈建輸送量
<a name="t_Loading-data-from-dynamodb-provisioned-throughput-with-automatic-compression"></a>

依預設，每當您指定空白的目標資料表而沒有壓縮編碼時，COPY 命令會套用自動壓縮。自動壓縮分析最初會從 Amazon DynamoDB 資料表取樣大量資料列。樣本大小是基於 COMPROWS 參數的值。預設值為每個配量 100,000 個資料列。

取樣之後，會捨棄樣本資料列並載入整個資料表。因此，許多資料列會讀取兩次。如需自動壓縮運作方式的相關資訊，請參閱[利用自動壓縮載入資料表](c_Loading_tables_auto_compress.md)。

**重要**  
當 COPY 命令從 Amazon DynamoDB 資料表讀取資料時，包括用於取樣的資料列，產生的資料傳輸為該資料表佈建的輸送量的一部分。

## 從 Amazon DynamoDB 載入多位元組資料
<a name="t_Loading-data-from-dynamodb-loading-multibyte-data-from-amazon-dynamodb"></a>

如果資料包含非 ASCII 多位元組字元 (例如中文或斯拉夫文字元)，您必須將資料載入 VARCHAR 欄。VARCHAR 資料類型支援四位元組 UTF-8 字元，但 CHAR 資料類型只接受單位元組 ASCII 字元。您無法將五位元組或更長的字元載入 Amazon Redshift 資料表。如需 CHAR 和 VARCHAR 的相關資訊，請參閱[資料類型](c_Supported_data_types.md)。