從 Amazon DynamoDB 資料表載入資料 - Amazon Redshift

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

從 Amazon DynamoDB 資料表載入資料

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

重要

除非您使用 REGION選項指定 Amazon DynamoDB 資料表所在的 AWS 區域,否則必須在與叢集相同的 AWS 區域中建立提供資料的 Amazon DynamoDB 資料表。

此COPY命令使用 Amazon Redshift 大規模平行處理 (MPP) 架構,從 Amazon DynamoDB 資料表平行讀取和載入資料。您可以藉由在 Amazon Redshift 資料表上設定配送樣式來善加利用平行處理。如需詳細資訊,請參閱查詢最佳化的資料分佈

重要

當COPY命令從 Amazon DynamoDB 資料表讀取資料時,產生的資料傳輸是該資料表佈建輸送量的一部分。

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

COPY 命令使用下列規則,將 DynamoDB 資料表擷取的項目中的屬性名稱與現有 Amazon Redshift 資料表中的資料欄名稱相符:

  • Amazon Redshift 資料表資料欄與 Amazon DynamoDB 項目屬性為不區分大小寫的比對。如果 DynamoDB 資料表中的項目包含多個屬性,這些屬性只有在價格和 等情況下才會不同PRICE,則COPY命令將會失敗。

  • 不符合 Amazon DynamoDB 資料表中屬性的 Amazon Redshift 資料表資料欄會載入為 NULL或空白,具體取決於COPY命令中以 EMPTYASNULL選項指定的值。

  • 不符合 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 授權。對於要載入DESCRIBE的 Amazon DynamoDB 資料表,許可必須包含 SCAN和 。如需所需許可的相關資訊,請參閱IAM COPY、 UNLOAD和 的許可 CREATE LIBRARY。偏好的身分驗證方法是指定 IAM_ROLE 參數,並為具有必要許可IAM的角色提供 Amazon Resource Name (ARN)。如需詳細資訊,請參閱角色類型存取控制

若要使用 IAM_ROLE 參數進行身分驗證,<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';

如需其他授權選項的相關資訊,請參閱授權參數

如果您想要在不實際載入資料表的情況下驗證資料,請使用 NOLOAD選項搭配 COPY命令。

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

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

為了最大限度地提高輸送量,COPY命令會在叢集中的運算節點之間平行載入來自 Amazon DynamoDB 資料表的資料。

具備自動壓縮的佈建輸送量

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

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

重要

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

從 Amazon DynamoDB 載入多位元組資料

如果您的資料包含非ASCII多位元組字元 (例如中文或西里爾文字元),您必須將資料載入VARCHAR資料欄。VARCHAR 資料類型支援 4 位元組 UTF-8 個字元,但CHAR資料類型只接受單位元組ASCII字元。您無法將五位元組或更長的字元載入 Amazon Redshift 資料表。如需 CHAR和 的詳細資訊VARCHAR,請參閱 資料類型