從已壓縮和未壓縮的檔案載入資料 - Amazon Redshift

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

從已壓縮和未壓縮的檔案載入資料

載入壓縮的資料時,建議您將每個資料表的資料分割為多個檔案。載入未壓縮的已分隔資料後,COPY 命令會使用大量平行處理 (MPP) 和掃描範圍,從 Amazon S3 儲存貯體中的大型檔案載入資料。

從多個壓縮的檔案載入資料

如果您有壓縮的資料,建議您將每個資料表的資料分割為多個檔案。COPY 命令可以從多個檔案平行載入資料。您可以透過為集合指定通用字首或字首索引鍵,或在資訊清單檔案中明確列出檔案來載入多個檔案。

將您的資料分割為檔案,使得檔案的數量為您的叢集中配量數量的倍數。以該方式,Amazon Redshift 可以在配量間平均分割資料。每一節點的配量數目取決於叢集的節點大小。例如,每個 ds2.xl 運算節點有兩個配量,而每個 ds2.8xl 運算節點有 32 個配量。如需每個節點大小有多少配量的相關資訊,請參閱《Amazon Redshift 管理指南》中的關於叢集和節點

節點全部會參與在執行的平行查詢中,以處理盡可能平均地分佈於配量的資料。如果您有包含兩個 ds2.xl 節點的叢集,您可以將資料分割成四 (或四的倍數) 個檔案。Amazon Redshift 在分割工作負載時,不會考量檔案大小。因此,您需要確定壓縮後的檔案大小大致相同 (從 1 MB 到 1 GB)。

若要使用物件字首來識別載入檔案,將每個檔案以通用字首命名。例如,venue.txt 檔案可以分割為四個檔案,如下所示。

venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

如果您將多個檔案放置在儲存貯體的資料夾中,並將資料夾名稱指定為該字首,則 COPY 就會載入資料夾中的所有檔案。如果您使用資訊清單檔案明確列出要載入的檔案,檔案可以位在不同的儲存貯體或資料夾中。

如需資訊清單檔案的相關資訊,請參閱Example: COPY from Amazon S3 using a manifest

從未壓縮的已分隔檔案載入資料

當您載入未壓縮的已分隔資料時,COPY 命令會使用 Amazon Redshift 中的大量平行處理 (MPP) 架構。Amazon Redshift 會自動使用平行運作的配量,以從 Amazon S3 儲存貯體中的大型檔案中載入資料範圍。檔案必須已分隔,才能進行平行載入。例如,以縱線字元分隔。使用 COPY 命令自動進行平行資料載入也可用於 CSV 檔案。您可以藉由在資料表上設定分佈索引鍵來利用平行處理。如需分佈索引鍵的相關資訊,請參閱使用資料分佈樣式

若 COPY 查詢包含下列任何關鍵字,則不支援自動平行資料載入:ESCAPE、REMOVEQUOTES 和 FIXEDWIDTH。

來自檔案的資料會載入到目標資料表,每個資料列一行。資料檔案中的欄位會依次與資料表資料欄對應,由左至右。資料檔案中的欄位可以是固定寬度或以字元分隔;預設的分隔符號為管線 (|)。依預設,所有資料表資料欄已載入,但您可以選擇性地定義以逗點分隔的資料欄清單。如果資料表資料欄未包含在 COPY 命令指定的資料欄清單中,則會使用預設值載入。如需詳細資訊,請參閱 載入預設的欄位值

如果資料未壓縮也未分隔時,請遵循以下一般程序從 Amazon S3 載入資料:

  1. 將檔案上傳至 Amazon S3。

  2. 執行 COPY 命令載入資料表。

  3. 驗證資料已正確載入。

如需 COPY 命令的範例,請參閱 COPY 範例。如需載入 Amazon Redshift 的資料相關資訊,請檢查 STL_LOAD_COMMITSSTL_LOAD_ERRORS 系統資料表。

如需有關節點及每個節點所含配量的相關資訊,請參閱《Amazon Redshift 管理指南》中的關於叢集和節點