本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
UNLOAD
使用 Amazon S3 伺服器端加密 (SSE-S3)JSON,將查詢結果卸載到一個或多個文字或 Amazon S3 上的 Apache 實木複合地板檔案。您也可以指定伺服器端加密 AWS Key Management Service 使用客戶管理的金鑰進行 key (SSE-KMS) 或用戶端加密。
依預設,卸載檔案的格式為以豎線分隔 (|
) 的文字。
您可以通過設置參數來管理 Amazon S3 上的文件大小,並通過擴展名管理文件MAXFILESIZE數量。確定 S3 IP 範圍已新增至您的允許清單。若要進一步了解所需的 S3 IP 範圍,請參閱網路隔離。
您可以將 Amazon Redshift 查詢的結果以 Apache Parquet 卸載至您的 Amazon S3 資料湖,這是一種用於分析的高效率開放單欄式儲存格式。相較於文字格式,Parquet 格式的卸載速度提升達 2 倍,並且在 Amazon S3 中使用的儲存空間減少達 6 倍。這可以讓您將已在 Amazon S3 中執行的資料轉換和資料充實,以開放的格式儲存到您的 Amazon S3 資料湖。然後,您可以使用 Redshift 頻譜和其他分析數據 AWS Amazon Athena,Amazon 和 Amazon EMR 等服務 SageMaker。
若要取得有關使用UNLOAD指令的更多資訊和範例案例,請參閱〈〉在 Amazon Redshift 卸載數據。
所需的權限和許可
若要讓UNLOAD命令成功,至少需要資料庫中資料的SELECT權限,以及寫入 Amazon S3 位置的權限。所需的權限與COPY命令類似。如需有關COPY指令權限的資訊,請參閱存取其他 AWS 資源的許可。
語法
UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::
<AWS 帳戶-id-1>
:role/<role-name>
[,arn:aws:iam::<AWS 帳戶-id-2>
:role/<role-name>
][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'
參數
- ('select-statement')
-
SELECT查詢。查詢的結果會卸載。在大多數情況下,通過在查詢中指定 BY 子句,以排序順序卸載數據是值得的。ORDER此方式可節省重新載入資料時,排序資料所需的時間。
查詢必須用單引號括住,如下所示:
('select * from venue order by venueid')
注意
如果您的查詢包含引號 (例如為了將常值括住),請將常值放在兩組單引號內,您也必須將查詢放在單引號之間:
('select * from venue where venuestate=''NV''')
- TO 's3://object-path/name-prefix'
-
Amazon S3 上 Amazon Redshift 寫入輸出檔案物件的位置的完整路徑 (包括儲存貯體名稱),包括資訊清單檔案 (如果MANIFEST已指定)。物件名稱前面會加上 name-prefix。如果您使用
PARTITION BY
,會自動視需要將一個斜線 (/) 新增到 name-prefix 值的結尾。為了增加安全性,請使用UNLOAD連接連接到 Amazon S3。HTTPS依預設,UNLOAD會為每個磁碟片段寫入一或多個檔案。UNLOAD將切片編號和零件號碼附加到指定的名稱前置詞,如下所示:
.<object-path>
/<name-prefix>
<slice-number>
_part_<part-number>
如果MANIFEST指定,資訊清單檔案會寫入如下:
.<object_path>
/<name_prefix>
manifest如果PARALLEL已指定OFF,資料檔案會寫入如下:
.<object_path>
/<name_prefix>
<part-number>
UNLOAD使用 Amazon S3 伺服器端加密 (SSE) 自動建立加密檔案,包括資訊清單檔案 (如果使MANIFEST用的話)。此命COPY令會在載入作業期間自動讀取伺服器端加密檔案。您可以使用 Amazon S3 主控台或API從儲存貯體透明地下載伺服器端加密檔案。如需詳細資訊,請參閱使用伺服器端加密保護資料。
若要使用 Amazon S3 用戶端加密,請指定ENCRYPTED選項。
重要
REGION當 Amazon S3 存儲桶不在同一個時,是必需的 AWS 區域 作為 Amazon Redshift 數據庫。
- authorization
-
此命UNLOAD令需要授權才能將資料寫入 Amazon S3。該UNLOAD命令使用命COPY令用於授權的參數相同。如需詳細資訊,請參閱COPY指令授權參數語法參考中的。
- IAM_ ROLE {默認 | 'ARN:AWN:IAM::
<AWS 帳戶-id-1>
:角色/<role-name>
' -
使用預設關鍵字可讓 Amazon Redshift 使用設定為預設並在UNLOAD命令執行時與叢集關聯的IAM角色。
將 Amazon 資源名稱 (ARN) 用於叢集用於身份驗證和授權的IAM角色。如果指定 IAM _ROLE,則無法使用 ACCESS _ KEY _ID 和 SECRET ACCESS _ KEY TOKEN、SESSION _ 或CREDENTIALS。該 IAM _ ROLE 可以鏈接。如需詳細資訊,請參閱 Amazon Redshift 管理指南中的鏈結IAM角色。
- FORMAT[如]] CSV | PARQUET | JSON
-
關鍵字,用來指定取代預設格式的卸載格式。
如果CSV,請使用逗號 (,) 字元作為預設分隔符號,以CSV格式卸載至文字檔案。如果欄位包含分隔符號、雙引號、新行字元或歸位字元,已卸載檔案中的欄位便會括在雙引號中。資料欄位中的雙引號會使用額外的雙引號進行逸出。卸載零個資料列時,Amazon Redshift 可能會寫入空的 Amazon S3 物件。
何時PARQUET,卸載到 Apache 實木複合地板 1.0 版格式的文件。依預設,會使用SNAPPY壓縮來壓縮每個資料列群組。如需 Apache Parquet 格式的相關資訊,請參閱 Parquet
。 何時JSON,卸載到每一行都包含一個JSON對象的JSON文件,代表查詢結果中的完整記錄。當查詢結果包含SUPER資料行JSON時,Amazon Redshift 支援以巢狀方式寫入。若要建立有效的JSON物件,查詢中每個資料行的名稱必須是唯一的。在JSON檔案中,布林值會卸載為
t
或f
,且NULL值會卸載為。null
卸載零個資料列時,Amazon Redshift 不會寫入 Amazon S3 物件。FORMAT和 AS 關鍵字是選擇性的。您不能CSV與FIXEDWIDTH或一起使用ADDQUOTES。您不能PARQUET與DELIMITER、、FIXEDWIDTH、NULL AS ADDQUOTES、ESCAPE、、HEADERGZIPBZIP2、或搭配使用ZSTD。PARQUET只有ENCRYPTED在伺服器端加密時才支援 AWS Key Management Service 鍵(SSE-KMS)。您無法搭JSON配DELIMITER、HEADER、FIXEDWIDTHADDQUOTESESCAPE、或 NULL AS 使用。
- PARTITION通過(列名 [,...])[] INCLUDE
-
指定卸載操作的分割區索引鍵。UNLOAD依照 Apache Hive 慣例,自動根據分割區索引鍵值將輸出檔案分割為分割區資料夾。例如,屬於 2019 年分割區和九月分割區的 Parquet 檔案便會具有以下字首:
s3://amzn-s3-demo-bucket/my_prefix/year=2019/month=September/000.parquet
。column_name 的值必須是正在卸載查詢結果中的資料行。
如果您使用INCLUDE選項指定 PARTITION BY,則不會從卸載的檔案中移除磁碟分割欄。
Amazon Redshift 不支持 BY 子句中的字符串文PARTITION字。
- MANIFEST [ VERBOSE ]
-
建立資訊清單檔案,以明確列出UNLOAD處理程序所建立之資料檔案的詳細資訊。資訊清單是JSON格式的文字檔案,其URL中列出寫入 Amazon S3 的每個檔案。
如果MANIFEST使用VERBOSE選項指定,資訊清單會包含下列詳細資訊:
-
每個欄的欄名稱和資料類型 CHARVARCHAR,以及用於、或NUMERIC資料類型的維度。對於CHAR和VARCHAR數據類型,維度是長度。對於DECIMAL或NUMERIC資料類型,尺寸為精確度和刻度。
-
卸載至每個檔案的資料列計數。如果已指定HEADER選項,列計數會包含標題行。
-
卸載的所有檔案的檔案大小總計以及卸載至所有檔案的資料列計數總計。如果已指定HEADER選項,列計數會包含標題行。
-
作者。作者一律是 "Amazon Redshift"。
您VERBOSE只能指定下列項目MANIFEST。
資訊清單檔案會寫入與卸載檔案相同的 Amazon S3 路徑字首,其格式為
<object_path_prefix>manifest
。例如,如果UNLOAD指定 Amazon S3 路徑前綴 's3://amzn-s3-demo-bucket/venue_
',則資訊清單檔案位置為 's3://amzn-s3-demo-bucket/venue_manifest
'。 -
- HEADER
-
在每個輸出檔案上方新增包含資料欄名稱的標題行。文字轉換選項 (例如CSVDELIMITER、ADDQUOTESESCAPE、和) 也會套用至標題行。您不能使HEADER用FIXEDWIDTH.
- DELIMITERAS '分隔符字符'
-
指定用於分隔輸出檔案中欄位的單一ASCII字元,例如直線字元 (|)、逗號 (,) 或定位點 (\ t)。文字檔的預設分隔符號為縱線字元。CSV檔案的預設分隔符號是逗號字元。AS 關鍵字為選用。您不能使DELIMITER用FIXEDWIDTH. 如果資料包含分隔符號字元,則需要指定逸出分隔符號的ESCAPE選項,或ADDQUOTES使用將資料用雙引號括住。或者,指定資料中未包含的分隔符號。
- FIXEDWIDTH'固定寬度規格'
-
將資料卸載至每個欄寬是固定長度 (而不是以分隔字元隔開) 的檔案。fixedwidth_spec 是字串,指定資料欄數和欄寬。AS 關鍵字為選用。因為FIXEDWIDTH不會截斷資料,所以UNLOAD陳述式中每個資料行的規格必須至少與該資料行的最長項目長度相同。fixedwidth_spec 的格式如下所示:
'colID1:colWidth1,colID2:colWidth2, ...'
您不能FIXEDWIDTH與DELIMITER或一起使用HEADER。
- ENCRYPTED [AUTO]
-
指定 Amazon S3 上的輸出檔案將使用 Amazon S3 伺服器端加密或用戶端加密進行加密。如果MANIFEST指定,資訊清單檔案也會加密。如需詳細資訊,請參閱卸載加密的資料檔案。如果您未指定ENCRYPTED參數,請使用 Amazon S3 伺服器端加密UNLOAD自動建立加密檔案 AWS-受管加密金鑰 (SSE-S3)。
對於ENCRYPTED,您可能想要使用伺服器端加密與 AWS KMS 鍵(SSE-KMS)。如果是這種情況,請使用 KMS_KEY_ID 參數來提供金鑰 ID。您不能將CREDENTIALS參數與 KMS _ KEY _ID 參數搭配使用。如果您使用 KMS _ KEY _ID 執行資料UNLOAD命令,則可以在不指定索引鍵的情況下對相同資料執行COPY作業。
如要搭配客戶提供的對稱金鑰使用用戶端加密卸載至 Amazon S3,請透過以下兩種方式中的其中一種來提供金鑰。如要提供金鑰,請使用 MASTER_SYMMETRIC_KEY 參數,或是 CREDENTIALS 登入資料字串的
master_symmetric_key
部分。如果您使用根對稱金鑰卸載資料,請務必在對加密資料執行COPY作業時提供相同的金鑰。UNLOAD使用客戶提供的金鑰 (SSE-C) 不支援 Amazon S3 伺服器端加密。
如果使ENCRYPTEDAUTO用,則指UNLOAD令會擷取預設值 AWS KMS 在目標 Amazon S3 儲存貯體屬性上加密金鑰,並使用 AWS KMS 索引鍵。如果值區沒有預設值 AWS KMS 加密金鑰,使用 Amazon Redshift 伺服器端加密功能,UNLOAD自動建立加密檔案 AWS-受管加密金鑰 (SSE-S3)。您不能將此選項與 KMS _ KEY ID、_ 或包含主對稱密鑰的 MASTER SYMMETRIC _ KEY CREDENTIALS 一起使用。
- KMSKEY_ ID '密鑰識別碼'
-
指定的密鑰 ID AWS Key Management Service (AWS KMS) 用於在 Amazon S3 上加密資料檔案的金鑰。如需詳細資訊,請參閱什麼是 AWS Key Management Service? 如果指定 KMS _ KEY _ID,也必須指定ENCRYPTED參數。如果指定 KMS _ KEY _ID,則無法使用CREDENTIALS參數進行驗證。請改用 IAM_ROLE 或 ACCESS_KEY_ID and SECRET_ACCESS_KEY。
- MASTERSYMMETRIC_ KEY '根密鑰'
-
指定要用來加密 Amazon S3 上資料檔案的根對稱金鑰。如果指定 MASTER _ SYMMETRIC _KEY,也必須指定ENCRYPTED參數。您不能將 MASTER _ SYMMETRIC _ KEY 與CREDENTIALS參數搭配使用。如需詳細資訊,請參閱從 Amazon S3 載入加密的資料檔案。
- BZIP2
-
將資料卸載至每個分割中的一個或多個 bzip2 壓縮檔。產生的每個檔案都會附加
.bz2
副檔名。 - GZIP
-
將資料卸載至每個分割中的一個或多個 gzip 壓縮檔。產生的每個檔案都會附加
.gz
副檔名。 - ZSTD
-
將資料卸載至每個分割中的一個或多個 Zstandard 壓縮檔。產生的每個檔案都會附加
.zst
副檔名。 - ADDQUOTES
-
在每個卸載的資料欄位前後加上引號,如此 Amazon Redshift 就能卸載包含分隔符號本身的資料值。例如,如果分隔符號是逗號,您可以成功卸載並重新載入下列資料:
"1","Hello, World"
如果沒有新增雙引號,
Hello, World
字串將會剖析為兩個不同欄位。某些輸出格式不支持ADDQUOTES。
如果使用ADDQUOTES,則必須REMOVEQUOTES在中指定COPY如果重新載入資料。
- NULLAS '空字符串'
-
指定一個字串,代表卸載檔案中的 null 值。若使用此選項,所有輸出檔案都會包含指定的字串,用以取代所選取資料中找到的任何 null 值。若未指定此選項,則 null 值會卸載為:
-
分隔符號輸出的零長度字串
-
固定寬度輸出的空白字串
若針對固定寬度卸載指定 null 字串,而輸出資料欄的寬度小於 null 字串的寬度,則會發生下列行為:
-
非字元資料欄的輸出為空欄位
-
針對字元資料欄回報錯誤
與其他使用者定義字串代表空值的資料類型不同,Amazon Redshift 會使用格式匯出SUPER資料欄,並根據JSON格式決定將其表示為空值。JSON因此,SUPER資料欄會忽略指UNLOAD令中使用的 NULL [AS] 選項。
-
- ESCAPE
-
對於CHAR和分隔的卸載文件中的VARCHAR列,轉義字符(
\
)被放置在每次出現以下字符之前:-
換行:
\n
-
歸位字元:
\r
-
針對卸載資料指定的分隔符號字元。
-
逸出字元:
\
-
引號字元:
"
或'
(如果指令中同時ESCAPE指定了 UNLOAD AND)。ADDQUOTES
重要
如果您使用COPY帶ESCAPE選項的 a 載入資料,您還必須使用指UNLOAD令指定ESCAPE選項,以產生往復式輸出檔案。同樣,如果您UNLOAD使用該ESCAPE選項,則需要COPY在相同的數據ESCAPE時使用。
-
- ALLOWOVERWRITE
-
依預設,如UNLOAD果找到可能會覆寫的檔案,就會失敗。如果ALLOWOVERWRITE已指定,則UNLOAD會覆寫現有檔案,包括資訊清單檔案。
- CLEANPATH
-
在將檔案卸載到指定位置之前,CLEANPATH此選項會移除 TO 子句中指定之 Amazon S3 路徑中的現有檔案。
如果您包含 PARTITION BY 子句,則僅從分區文件夾中刪除現有文件,以接收UNLOAD操作生成的新文件。
您必須具有 Amazon S3 儲存貯體的
s3:DeleteObject
許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 Amazon S3 的政策和許可。您使用該CLEANPATH選項刪除的文件將被永久刪除,無法恢復。如果目標 Amazon S3 儲存貯體已啟用版本控制,則UNLOAD使用該CLEANPATH選項不會移除先前版本的檔案。如果您指定選CLEANPATH項,則無法指定ALLOWOVERWRITE選項。
- PARALLEL
-
依預設,UNLOAD會根據叢集中的磁碟片段數目,parallel 寫入資料到多個檔案。預設選項為「開啟」或TRUE。如果PARALLEL是OFF或FALSE,依序UNLOAD寫入一個或多個數據文件,完全根據 ORDER BY 子句排序,如果使用一個。資料檔案大小上限為 6.2 GB。因此,例如,如果卸載 13.4 GB 的資料,UNLOAD會建立以下三個檔案。
s3://amzn-s3-demo-bucket/key000 6.2 GB s3://amzn-s3-demo-bucket/key001 6.2 GB s3://amzn-s3-demo-bucket/key002 1.0 GB
注意
該UNLOAD命令被設計為使用 parallel 處理。我們建議在大多數情況下保持PARALLEL啟用狀態,特別是如果使用COPY命令來載入表格的檔案。
- MAXFILESIZE[如] 最大尺寸 [MB | GB]
-
指定在 Amazon S3 中UNLOAD建立的檔案大小上限。指定介於 5 MB 和 6.2 GB 之間的小數值。AS 關鍵字為選用。預設單位為 MB。如果MAXFILESIZE未指定,預設檔案大小上限為 6.2 GB。資訊清單檔案的大小 (如果使用的話) 不會受到影響MAXFILESIZE。
- ROWGROUPSIZE[如] 大小 [MB | GB]
-
指定資料列群組的大小。選擇較大的大小可減少資料列群組的數目,進而減少網路通訊量。請指定介於 32 MB 到 128 MB 之間的整數值。AS 關鍵字為選用。預設單位為 MB。
如果ROWGROUPSIZE未指定,則預設大小為 32 MB。若要使用此參數,儲存格式必須是鑲木地板,且節點類型必須是 ra3.4xlarge、ra3.16xlarge 或 dc2.8xlarge。
- REGION[AS] 'aws-region'
-
指定 AWS 區域 目標 Amazon S3 存儲桶所在的位置。REGION對於不在UNLOAD相同的 Amazon S3 存儲桶是必需的 AWS 區域 作為 Amazon Redshift 數據庫。
aw_ 區域的值必須符合 AWS 列於 Amazon Redshift 區域和端點資料表中的區域 AWS 一般參考.
依預設,UNLOAD假設目標 Amazon S3 儲存貯體位於同一個儲存貯體 AWS 區域 作為 Amazon Redshift 數據庫。
- EXTENSION'擴充功能名稱'
-
指定要附加到卸載檔案名稱的副檔名。Amazon Redshift 不會執行任何驗證,因此您必須確認指定的副檔名是否正確。如果您使用的是壓縮方法,例如GZIP,您仍然必須
.gz
在擴展參數中指定。如果您不提供任何副檔名,Amazon Redshift 不會在文件名中添加任何內容。如果您指定壓縮方法而不提供副檔名,Amazon Redshift 只會將壓縮方法的副檔名新增至檔案名稱。
使用須知
用ESCAPE於所有分隔文字UNLOAD作業
UNLOAD使用分隔符號時,您的資料可以包含該分隔符號或ESCAPE選項說明中列出的任何字元。在此情況下,您必須搭配UNLOAD陳述式使用ESCAPE選項。如果不搭配使用選ESCAPE項UNLOAD,使用卸載資料的後續COPY作業可能會失敗。
重要
我們強烈建議您始終ESCAPE與UNLOAD和COPY語句一起使用。如果您確定資料未包含任何分隔符號或可能需要逸出的其他字元,則為例外。
浮點數精確度喪失
您可能遇到後續卸載並重新載入的浮點資料精確度喪失的情況。
Limit 子句
查SELECT詢不能在外部使用LIMIT子句SELECT。例如,下列UNLOAD陳述式會失敗。
unload ('select * from venue limit 10') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
請改用巢狀LIMIT子句,如下列範例所示。
unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
您也可以使用SELECT... INTO 或 CREATE TABLE AS 使用LIMIT子句填入資料表,然後從該資料表中卸載。
卸載數GEOMETRY據類型的列
您只能將GEOMETRY欄卸載為文字或CSV格式。您無法使用該FIXEDWIDTH
選項卸載GEOMETRY數據。資料會以十六進位形式的延伸已知二進位 (EWKB) 格式卸載。如果資EWKB料大小超過 4 MB,則會發生警告,因為資料稍後無法載入到資料表中。
卸載數HLLSKETCH據類型
您只能將HLLSKETCH欄卸載為文字或CSV格式。您無法使用該FIXEDWIDTH
選項卸載HLLSKETCH數據。對於密集 HyperLogLog 草圖,資料會以 Base64 格式卸載,或以稀疏 HyperLogLog 草圖的JSON格式卸載資料。如需詳細資訊,請參閱HyperLogLog 函數。
下列範例會將包含HLLSKETCH欄的表格匯出至檔案。
CREATE TABLE a_table(an_int INT, b_int INT); INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2); CREATE TABLE hll_table (sketch HLLSKETCH); INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int; UNLOAD ('select * from hll_table') TO 's3://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;
卸載數VARBYTE據類型的列
您只能將VARBYTE欄卸載為文字或CSV格式。資料會以十六進位形式卸載。您無法使用該FIXEDWIDTH
選項卸載VARBYTE數據。不支援UNLOADCSV的ADDQUOTES
選項。資VARBYTE料行不能是 PARTITIONED BY 資料行。
FORMATAS PARQUET 條款
使用 FORMAT AS 時,請注意以下注意事項PARQUET:
-
卸載至 Parquet 不會使用檔案層級壓縮。每個資料列群組都會使用壓縮SNAPPY。
-
如果MAXFILESIZE未指定,預設檔案大小上限為 6.2 GB。您可以使MAXFILESIZE用指定 5 MB 至 6.2 GB 的檔案大小。實際檔案大小會在寫入檔案時估算,因此可能不會與您指定的數字完全相等。
為了最大化掃描效能,Amazon Redshift 會嘗試建立包含 32-MB 相等大小資料列群組的 Parquet 檔案。您指定的MAXFILESIZE值會自動四捨五入至最接近的 32 MB 倍數。例如,如果您指定 MAXFILESIZE 200 MB,則卸載的每個實木複合地板檔案大約為 192 MB (32 MB 的資料列群組 x 6 = 192 MB)。
-
如果資料行使用TIMESTAMPTZ資料格式,則只會卸載時間戳記值。不會卸載時區資訊。
-
請不要指定以底線 (_) 或句號 (.) 字元開頭的檔案名稱字首。Redshift Spectrum 會將以這些字元開頭的檔案視為隱藏檔案並進行忽略。
PARTITIONBY 子句
使用 PARTITION BY 時,請注意以下注意事項:
-
分割區資料行不會包含在輸出檔案中。
-
請務必在UNLOAD陳述式中使用的SELECT查詢中包含分割區資料行。您可以在UNLOAD命令中指定任意數量的分割區欄。但是,其中一個限制是檔案內至少應包含一個非分割區資料行。
-
如果分割區索引鍵的值為 Null,Amazon Redshift 會自動將該資料卸載至稱為
partition_column=__HIVE_DEFAULT_PARTITION__
的預設分割區。 -
此命UNLOAD令不會對外部目錄進行任何呼叫。要將新分區註冊為現有外部表的一部分,請使用單獨的 ALTERTABLE... ADDPARTITION... 命令。或者,您可以運行CREATEEXTERNALTABLE命令將卸載的數據註冊為新的外部表。您也可以使用 AWS Glue 爬行者程式來填入您的資料目錄。如需詳細資訊,請參閱 < 定義搜尋器 > AWS Glue 開發人員指南。
-
如果您使用MANIFEST此選項,Amazon Redshift 只會在根 Amazon S3 資料夾中產生一個資訊清單檔案。
-
您可以用作分區索引鍵的資料欄資料類型為SMALLINTINTEGERBIGINTDECIMAL、REAL、BOOLEAN、CHAR、VARCHAR、、DATE、和TIMESTAMP。
使用ASSUMEROLE權限授與UNLOAD作業IAM角色的存取權
若要為特定使用者和群組提供UNLOAD作業IAM角色的存取權,超級使用者可以將IAM角色的ASSUMEROLE權限授與使用者和群組。如需相關資訊,請參閱 GRANT。
UNLOAD不支援 Amazon S3 存取點別名
您無法將 Amazon S3 存取點別名與UNLOAD命令搭配使用。
範例
若要取得展示如何使用UNLOAD指令的範例,請參閱〈〉UNLOAD例子。