資料載入操作 - Amazon Redshift

自 2025 年 11 月 1 日起,Amazon Redshift 將不再支援建立新的 Python UDFs。如果您想要使用 Python UDFs,請在該日期之前建立 UDFs。現有的 Python UDFs將繼續如常運作。如需詳細資訊,請參閱部落格文章

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

資料載入操作

指定下列參數來管理載入操作的預設行為,以進行故障排除或縮短載入時間。

參數
COMPROWS numrows

指定列數做為壓縮分析的樣本大小。分析是以每個資料配量中的列為對象。例如,假設您指定 COMPROWS 1000000 (1,000,000),而系統總共包含四個配量,則每個配量最多讀取和分析 250,000 列。

如果不指定 COMPROWS,則每個配量的樣本大小預設為 100,000。如果 COMPROWS 的值小於每個配量預設的 100,000 列,則會將該值自動提高到預設值。但是,如果載入的資料量不足以構成有意義的樣本,則不會執行自動壓縮。

如果 COMPROWS 數字大於輸入檔案中的列數,COPY 命令仍會繼續,並對所有可用的列執行壓縮分析。此引數可接受的範圍是介於 1000 到 2147483647 (2,147,483,647) 之間的數字。

COMPUPDATE [ PRESET | { ON | TRUE } | { OFF | FALSE } ]

控制在 COPY 期間是否自動套用壓縮編碼。

COMPUPDATE 為 PRESET 時,如果目標資料表為空白,即使資料欄已有 RAW 以外的編碼,COPY 命令也會為每個資料欄選擇壓縮編碼。可以取代目前指定的資料欄編碼。每個資料欄的編碼是以資料欄的資料類型為基礎。不會對任何資料取樣。Amazon Redshift 會自動指派壓縮編碼,如下所示:

  • 定義為排序索引鍵的資料欄會有指派的 RAW 壓縮。

  • 定義為 BOOLEAN、REAL 或 DOUBLE PRECISION 資料類型的資料欄會有指派的 RAW 壓縮。

  • 定義為 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP 或 TIMESTAMPTZ 的資料欄會有指派的 AZ64 壓縮。

  • 定義為 CHAR 或 VARCHAR 的資料欄會有指派的 LZO 壓縮。

省略 COMPUPDATE 時,只有在目標資料表為空白而您尚未為任何資料欄指定編碼 (RAW 除外) 時,COPY 命令才會為每個資料欄選擇壓縮編碼。每個欄的編碼是由 Amazon Redshift 決定。不會對任何資料取樣。

當 COMPUPDATE 為 ON (或 TRUE) 或指定了 COMPUPDATE 但未帶選項時,如果資料表是空的,即使資料表欄已有 RAW 以外的編碼,COPY 也會套用自動壓縮。可以取代目前指定的資料欄編碼。每個資料欄的編碼會根據取樣資料的分析。如需詳細資訊,請參閱利用自動壓縮載入資料表

將 COMPUPDATE 設為 OFF (或 FALSE) 時,會停用自動壓縮。不會變更資料欄編碼。

如需關於分析壓縮的系統資料表資訊,請參閱 STL_ANALYZE_COMPRESSION

IGNOREALLERRORS

您可以指定此選項來忽略載入作業期間發生的所有錯誤。

如果您指定 MAXERROR 選項,就無法指定 IGNOREALLERRORS 選項。您無法為包括 ORC 和 Parquet 在內的單欄格式指定 IGNOREALLERRORS 選項。

MAXERROR [AS] error_count

如果載入傳回 error_count 個或更多錯誤,載入會失敗。如果載入傳回的錯誤很少,則會繼續載入,並傳回 INFO 訊息來指出無法載入的列數。當某些列因為格式錯誤或資料有其他不一致情形而無法載入到資料表時,使用此參數可讓載入繼續進行。

如果要讓載入在發生第一個錯誤時立即失敗,請將此值設為 01。AS 關鍵字為選用。MAXERROR 預設值為 0,限制為 100000

由於 Amazon Redshift 的平行本質,實際報告的錯誤數可能大於指定的 MAXERROR。如果 Amazon Redshift 叢集中的任何節點偵測到已超過 MAXERROR,每個節點會報告所有已遇到的錯誤。

NOLOAD

檢查資料檔案的有效性,而不實際載入資料。在執行實際資料載入之前,請使用 NOLOAD 參數來確保資料檔案可載入無誤。搭配 NOLOAD 參數來執行 COPY 的速度比載入資料快很多,因為其只會剖析檔案。

STATUPDATE [ { ON | TRUE } | { OFF | FALSE } ]

控管在成功的 COPY 命令結束時自動運算和重新整理最佳化工具統計資料。根據預設,如果不使用 STATUPDATE 參數,只要資料表最初是空白,就會自動更新統計資料。

每當將資料擷取到非空白資料表就會大幅改變資料表大小時,建議您執行 ANALYZE 命令或使用 STATUPDATE ON 引數來更新統計資料。

指定 STATUPDATE ON (或 TRUE) 時,不論資料表最初是否空白,都會自動更新統計資料。如果使用 STATUPDATE,則目前使用者必須是資料表擁有者或超級使用者。如果不指定 STATUPDATE,則只需要 INSERT 許可。

指定 STATUPDATE OFF (或 FALSE) 時永遠不會更新統計資料。

如需其他資訊,請參閱 分析資料表