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

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

從 Amazon DynamoDB 資料表載入資料

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

重要

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

此命COPY令使用 Amazon Redshift 大規模 parallel 處理 (MPP) 架構,從 Amazon DynamoDB 表格 parallel 讀取和載入資料。您可以藉由在 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 表格資料行會根據命令中的EMPTYASNULL選項所指定的值而定,載入為NULL或空白。COPY

  • 不符合 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 登入資料。如果這些登入資料對應於某個使用者,則該使用者必須擁有載入的 Amazon DynamoDB 表的權限。SCAN DESCRIBE

授權值為您的叢集提供存取 Amazon DynamoDB 表所需的 AWS 授權。對於正在載入SCANDESCRIBE的 Amazon DynamoDB 表格,此權限必須包含和。如需所需許可的相關資訊,請參閱IAMCOPY、和的UNLOAD權限 CREATE LIBRARY。慣用的身份驗證方法是指定 IAM _ ROLE 參數,並為具有必要許可的IAM角色提供 Amazon 資源名稱 (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';

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

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

下列範例會使用 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命令會在叢集中的各個運算節點 parallel 載入 Amazon DynamoDB 表格中的資料。

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

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

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

重要

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

從 Amazon DynamoDB 載入多位元組資料

如果您的資料包含非ASCII多位元組字元 (例如中文或斯拉夫字元),則必須將資料載入欄。VARCHAR資VARCHAR料類型支援四位元組 UTF -8 個字元,但CHAR資料類型只接受單一位ASCII元組字元。您無法將五位元組或更長的字元載入 Amazon Redshift 資料表。若要取得有關CHAR和的更多資訊VARCHAR,請參閱資料類型