本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ALTER TABLE
此命令會變更 Amazon Redshift 資料表或 Amazon Redshift Spectrum 外部資料表的定義。此命令會更新 CREATE TABLE 或 CREATE EXTERNAL TABLE 設定的值和屬性。
您無法ALTERTABLE在交易區塊內的外部資料表上執行 (BEGIN ... END)。如需交易的相關資訊,請參閱 可序列化隔離。
ALTER TABLE 會鎖定用於讀取和寫入操作的資料表,直到包含ALTERTABLE操作的交易完成為止,除非文件中特別說明您可以在資料表變更時查詢資料或執行資料表上的其他操作。
所需權限
修改資料表的使用者需要適當的權限,才能成功執行命令。視ALTERTABLE命令而定,需要下列其中一個權限。
超級使用者
具有 ALTERTABLE權限的使用者
具有結構描述上USAGE權限的資料表擁有者
語法
ALTER TABLE table_name { ADD table_constraint | DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] | OWNER TO new_owner | RENAME TO new_name | RENAME COLUMN column_name TO new_name | ALTER COLUMN column_name TYPE updated_varchar_data_type_size | ALTER COLUMN column_name ENCODE new_encode_type | ALTER COLUMN column_name ENCODE encode_type, | ALTER COLUMN column_name ENCODE encode_type, .....; | ALTER DISTKEY column_name | ALTER DISTSTYLE ALL | ALTER DISTSTYLE EVEN | ALTER DISTSTYLE KEY DISTKEY column_name | ALTER DISTSTYLE AUTO | ALTER [COMPOUND] SORTKEY ( column_name [,...] ) | ALTER SORTKEY AUTO | ALTER SORTKEY NONE | ALTER ENCODE AUTO | ADD [ COLUMN ] column_name column_type [ DEFAULT default_expr ] [ ENCODE encoding ] [ NOT NULL | NULL ] [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]} where table_constraint is: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ... ] ) | PRIMARY KEY ( column_name [, ... ] ) | FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ]} The following options apply only to external tables: SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' } | SET FILE FORMAT format | | SET TABLE PROPERTIES ('property_name'='property_value') | PARTITION ( partition_column=partition_value [, ...] ) SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } | ADD [IF NOT EXISTS] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } [, ... ] | DROP PARTITION ( partition_column=partition_value [, ...] )
若要減少執行ALTERTABLE命令的時間,您可以合併ALTERTABLE命令的某些子句。
Amazon Redshift 支援下列子ALTERTABLE句組合:
ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);
參數
- table_name
-
要修改的資料表名稱。僅指定資料表的名稱,或使用格式 schema_name.table_name 來使用專屬結構描述。外部資料表必須以外部結構描述名稱限定。如果您使用 ALTERTABLE陳述式重新命名檢視或變更其擁有者,也可以指定檢視名稱。資料表名稱的長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。您可以使用 UTF-8 個多位元組字元,最多四個位元組。如需有效名稱的相關資訊,請參閱 名稱與識別碼。
- ADD table_constraint
-
新增指定限制條件至資料表的子句。如需有效 table_constraint 值得說明,請參閱 CREATE TABLE。
注意
您無法將主索引鍵限制條件新增至可為 null 的資料欄。如果資料欄最初是使用NOTNULL限制條件建立的,您可以新增主金鑰限制條件。
- DROP CONSTRAINT traint_name
-
從資料表中刪除具名限制條件的子句。若要刪除限制條件,請指定限制條件名稱,而非限制條件類型。若要檢視資料表限制條件名稱,請執行下列查詢。
select constraint_name, constraint_type from information_schema.table_constraints;
- RESTRICT
-
僅移除指定限制條件的子句。RESTRICT 是 DROP 的選項CONSTRAINT。RESTRICT 無法與 搭配使用CASCADE。
- CASCADE
-
此子句會移除指定限制條件及相依於該限制條件的任何項目。CASCADE 是 DROP 的選項CONSTRAINT。CASCADE 無法與 搭配使用RESTRICT。
- OWNER 至新_擁有者
-
此子句會將資料表 (或檢視) 的擁有者變更為 new_owner 值。
- RENAME 至 new_name
-
此子句會將資料表 (或檢視) 重新命名為 new_name 中指定的值。資料表名稱長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。
您無法將永久資料表重新命名為開頭為 '#' 的名稱。開頭為 '#' 的資料表名稱代表暫時資料表。
您無法重新命名外部資料表。
- ALTER COLUMN column_name TYPE updated_varchar_data_type_size
-
變更定義為VARCHAR資料類型之資料欄大小的子句。此子句僅支援變更VARCHAR資料類型的大小。考量下列限制:
-
您無法變更具有壓縮編碼 BYTEDICT、RUNLENGTH、 TEXT255或 的資料欄TEXT32K。
-
您無法將大小降低至小於現有資料的大小上限。
-
您無法修改含預設值的資料欄。
-
您無法使用 UNIQUE、 PRIMARY KEY或 FOREIGN 變更資料欄KEY。
-
您無法變更交易區塊中的資料欄 (BEGIN ... END)。如需交易的相關資訊,請參閱 可序列化隔離。
-
- ALTER COLUMN column_name ENCODE new_encode_type
-
變更資料欄壓縮編碼的子句。如果您為資料欄指定壓縮編碼,則資料表不再設定為 ENCODE AUTO。如需壓縮編碼的詳細資訊,請參閱 資料欄壓縮以減少儲存資料的大小。
當您變更資料欄的壓縮編碼時,資料表仍可供查詢。
考量下列限制:
-
您無法將資料欄的編碼修改為目前資料行定義的編碼。
-
您無法在具有交錯排序索引鍵的資料表中修改資料行的編碼。
-
- ALTER COLUMN column_name ENCODE encode_type 、 ALTER COLUMN column_name ENCODE encode_type 、.....;
-
該子句可變更單一命令中多個資料欄的壓縮編碼。如需壓縮編碼的詳細資訊,請參閱 資料欄壓縮以減少儲存資料的大小。
當您變更資料欄的壓縮編碼時,資料表仍可供查詢。
考量下列限制:
您無法在單一命令中多次將資料欄變更為相同或不同的編碼類型。
您無法將資料欄的編碼修改為目前資料行定義的編碼。
-
您無法在具有交錯排序索引鍵的資料表中修改資料行的編碼。
- ALTER DISTSTYLE ALL
-
將資料表的現有分佈樣式變更為
ALL
的子句。考慮下列各項:-
DISTSTYLE、 ALTER SORTKEY和 ALTER VACUUM無法在相同的資料表上同時執行。
-
如果 VACUUM 目前正在執行,則執行 會ALTERDISTSTYLEALL傳回錯誤。
-
如果 ALTER DISTSTYLE ALL 正在執行,則背景真空不會在資料表上啟動。
-
-
具有交錯排序索引鍵和暫存資料表的資料表不支援 ALTERDISTSTYLEALL命令。
如果分佈樣式先前定義為 AUTO,則資料表不再是自動資料表最佳化的候選者。
如需 DISTSTYLE 的詳細資訊ALL,請參閱 CREATE TABLE。
-
- ALTER DISTSTYLE EVEN
-
將資料表的現有分佈樣式變更為
EVEN
的子句。考慮下列各項:-
DISTSYTLE、 ALTER SORTKEY和 ALTER VACUUM無法在相同的資料表上同時執行。
-
如果 VACUUM 目前正在執行,則執行 會ALTERDISTSTYLEEVEN傳回錯誤。
-
如果 ALTER DISTSTYLE EVEN 正在執行,則背景真空不會在資料表上啟動。
-
具有交錯排序索引鍵和暫存資料表的資料表不支援 ALTERDISTSTYLEEVEN命令。
如果分佈樣式先前定義為 AUTO,則資料表不再是自動資料表最佳化的候選者。
如需 DISTSTYLE 的詳細資訊EVEN,請參閱 CREATE TABLE。
-
- ALTER DISTKEY column_name 或 ALTER DISTSTYLE KEY DISTKEY column_name
-
會變更用作資料表的分佈索引鍵的資料欄的子句。考慮下列各項:
-
VACUUM 和 ALTER DISTKEY 無法在相同的資料表上同時執行。
-
如果 VACUUM 已在執行中,則 會ALTERDISTKEY傳回錯誤。
-
如果 ALTER DISTKEY 正在執行,則背景真空不會在資料表上啟動。
-
如果 ALTER DISTKEY 正在執行,則前景真空會傳回錯誤。
-
-
您一次只能在資料表上執行一個ALTERDISTKEY命令。
-
具有交錯排序索引鍵的資料表不支援 ALTERDISTKEY命令。
如果分佈樣式先前定義為 AUTO,則資料表不再是自動資料表最佳化的候選者。
指定 DISTSTYLE 時KEY,資料會由DISTKEY資料欄中的值分佈。如需 的詳細資訊DISTSTYLE,請參閱 CREATE TABLE。
-
- ALTER DISTSTYLE AUTO
-
將資料表的現有分佈樣式變更為 的子句AUTO。
當您將分佈樣式變更為 時AUTO,資料表的分佈樣式會設定為下列:
具有 的小資料表DISTSTYLEALL會轉換為 AUTO(ALL)。
具有 的小資料表DISTSTYLEEVEN會轉換為 AUTO(ALL)。
具有 的小資料表DISTSTYLEKEY會轉換為 AUTO(ALL)。
具有 的大型資料表DISTSTYLEALL會轉換為 AUTO(EVEN)。
具有 的大型資料表DISTSTYLEEVEN會轉換為 AUTO(EVEN)。
具有 的大型資料表DISTSTYLEKEY會轉換為 AUTO(KEY)DISTKEY,並保留 。在這種情況下,Amazon Redshift 不會對資料表進行任何變更。
如果 Amazon Redshift 判斷新的分佈樣式或索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在未來變更資料表的分佈樣式或索引鍵。例如,Amazon Redshift 可能會將具有 AUTO(KEY) DISTSTYLE 的資料表轉換為 AUTO(EVEN),反之亦然。如需修改分佈索引鍵時行為 (包括資料重新分佈和鎖定) 的相關資訊,請參閱 Amazon Redshift Advisor 建議。
如需 DISTSTYLE 的詳細資訊AUTO,請參閱 CREATE TABLE。
若要檢視資料表的分佈樣式,請查詢 SVV_TABLE_INFO 系統目錄檢視。如需詳細資訊,請參閱SVV_TABLE_INFO。若要檢視資料表的 Amazon Redshift Advisor 建議,請查詢 SVV_ALTER_TABLE_RECOMMENDATIONS 系統目錄檢視。如需詳細資訊,請參閱SVV_ALTER_TABLE_RECOMMENDATIONS。若要檢視 Amazon Redshift 採取的動作,請查詢 SVL_AUTO_WORKER_ ACTION系統目錄檢視。如需詳細資訊,請參閱SVL_AUTO_WORKER_ACTION。
- ALTER 【COMPOUND】 SORTKEY( column_name 【,...】 )
-
此子句可變更或新增用於資料表的排序索引鍵。ALTER SORTKEY 不支援暫存資料表。
當您變更排序索引鍵時,新排序索引鍵或原始排序索引鍵中欄的壓縮編碼可能會變更。如果沒有明確定義資料表的編碼,則 Amazon Redshift 會自動指定壓縮編碼,如下所示:
-
定義為排序索引鍵的資料欄會被指派RAW壓縮。
-
定義為 BOOLEAN、 REAL或 DOUBLE PRECISION 資料類型的資料欄會被指派RAW壓縮。
-
定義為 SMALLINT、INTEGER、、BIGINT、DECIMAL、DATE、TIME、TIMESTAMP、 TIMETZ或 的資料欄TIMESTAMPTZ會指派AZ64壓縮。
-
定義為 CHAR或 VARCHAR 且被指派LZO壓縮的資料欄。
考慮下列各項:
-
每個資料表的排序索引鍵最多可定義 400 個資料欄。
-
您可以將交錯排序索引鍵修改為複合排序索引鍵或無排序索引鍵。但是,您無法將複合排序索引鍵修改為交錯排序索引鍵。
如果排序索引鍵先前定義為 AUTO,則資料表不再是自動資料表最佳化的候選者。
-
Amazon Redshift 建議對定義為排序索引鍵的資料欄使用RAW編碼 (不壓縮)。當您變更資料欄以將其選擇為排序索引鍵時,資料欄的壓縮會變更為RAW壓縮 (無壓縮)。這可能會增加資料表所需的儲存空間。資料表大小的增加幅度取決於特定的資料表定義和資料表內容。如需壓縮的相關資訊,請參閱 壓縮編碼。
當資料載入資料表之後,資料就會依據排序索引鍵的排序載入。當您修改排序索引鍵時,Amazon Redshift 會重新排列資料。如需 的詳細資訊SORTKEY,請參閱 CREATE TABLE。
-
- ALTER SORTKEY AUTO
-
將目標資料表的排序索引鍵變更或新增至 的子句AUTO。ALTER SORTKEY AUTO 不支援暫存資料表。
當您將排序索引鍵變更為 時AUTO,Amazon Redshift 會保留資料表的現有排序索引鍵。
如果 Amazon Redshift 判斷新的排序索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在未來變更資料表的排序索引鍵。
如需 SORTKEY 的詳細資訊AUTO,請參閱 CREATE TABLE。
若要檢視資料表的排序索引鍵,請查詢 SVV_TABLE_INFO 系統目錄檢視。如需詳細資訊,請參閱SVV_TABLE_INFO。若要檢視資料表的 Amazon Redshift Advisor 建議,請查詢 SVV_ALTER_TABLE_RECOMMENDATIONS 系統目錄檢視。如需詳細資訊,請參閱SVV_ALTER_TABLE_RECOMMENDATIONS。若要檢視 Amazon Redshift 採取的動作,請查詢 SVL_AUTO_WORKER_ ACTION系統目錄檢視。如需詳細資訊,請參閱SVL_AUTO_WORKER_ACTION。
- ALTER SORTKEY NONE
-
移除目標資料表的排序索引鍵的子句。
如果排序索引鍵先前定義為 AUTO,則資料表不再是自動資料表最佳化的候選者。
- ALTER ENCODE AUTO
-
將目標資料表資料欄的編碼類型變更為 的子句AUTO。當您將編碼變更為 時AUTO,Amazon Redshift 會保留資料表中資料欄的現有編碼類型。然後,如果 Amazon Redshift 判斷新的編碼類型可以改善查詢效能,Amazon Redshift 就可以變更資料表資料欄的編碼類型。
如果您修改一個或多個欄以指定編碼,則 Amazon Redshift 不會再自動調整資料表中所有資料欄的編碼。這些資料欄會保留目前的編碼設定。
下列動作不會影響資料表ENCODEAUTO的設定:
重新命名資料表。
變更資料表的 DISTSTYLE或 SORTKEY設定。
使用 ENCODE設定新增或捨棄資料欄。
使用 COPY 命令COMPUPDATE的選項。如需詳細資訊,請參閱 資料載入操作。
若要檢視資料表的編碼,請查詢 SVV_TABLE_INFO 系統目錄檢視。如需詳細資訊,請參閱SVV_TABLE_INFO。
- RENAME COLUMN column_name TO new_name
-
此子句會將資料欄重新命名為 new_name 中指定的值。資料欄名稱長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。如需有效名稱的相關資訊,請參閱 名稱與識別碼。
- ADD 【 COLUMN 】 column_name
-
將指定名稱的資料欄新增至資料表的子句。每個ALTERTABLE陳述式只能新增一欄。
您無法新增 欄,該欄是 資料表的分佈索引鍵 (DISTKEY) 或排序索引鍵 (SORTKEY)。
您無法使用 ALTERTABLEADDCOLUMN命令來修改下表和資料欄屬性:
-
UNIQUE
-
PRIMARY KEY
-
REFERENCES (外部金鑰)
-
IDENTITY 或 GENERATED BY DEFAULT AS IDENTITY
資料欄名稱長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。單一資料表中可定義的資料欄數目上限為 1,600 個。
以下限制適用於新增資料欄至外部資料表時:
-
您無法將資料欄新增至具有資料欄限制 DEFAULT、ENCODE、 NOT NULL或 的外部資料表NULL。
-
您無法將資料欄新增至使用AVRO檔案格式定義的外部資料表。
-
若啟用虛擬資料欄,則單一外部資料表中可定義的資料欄數目上限為 1,598 個。若未啟用虛擬資料欄,則單一資料表中可定義的資料欄數目上限為 1,600 個。
如需詳細資訊,請參閱CREATE EXTERNAL TABLE。
-
- column_type
-
要新增之資料欄的資料類型。對於 CHAR和 VARCHAR資料欄,您可以使用 MAX關鍵字,而不是宣告長度上限。MAX 會將 的最大長度設定為 4,096 位元組,CHAR或 設定為 65,535 位元組VARCHAR。GEOMETRY 物件的大小上限為 1,048,447 個位元組。
如需有關 Amazon Redshift 支援資料類型的資訊,請參閱 資料類型。
- DEFAULT default_expr
-
此子句會指派資料欄的預設資料值。default_expr 的資料類型必須符合資料欄的資料類型。DEFAULT 值必須是無變數表達式。不允許子查詢、目前資料表中其他資料欄的交叉參考,以及使用者定義的功能。
default_expr 用於任何未指定資料欄值INSERT的操作。若未指定預設值,則資料欄的預設值為 null。
如果COPY操作在具有 DEFAULT值和NOTNULL限制條件的資料欄上遇到 null 欄位,則COPY命令會插入 default_expr 的值。
DEFAULT 不支援外部資料表。
- ENCODE 編碼
-
資料欄的壓縮編碼。根據預設,如果您未為資料表中的任何資料欄指定壓縮編碼,或指定資料表ENCODEAUTO的選項,Amazon Redshift 會自動管理資料表中所有資料欄的壓縮編碼。
如果您為資料表中的任何資料欄指定壓縮編碼,或如果您未指定資料表ENCODEAUTO的選項,Amazon Redshift 會自動將壓縮編碼指派給您未指定壓縮編碼的資料欄,如下所示:
-
根據預設,暫存資料表中的所有資料欄都會指派RAW壓縮。
-
定義為排序索引鍵的資料欄會被指派RAW壓縮。
-
定義為 BOOLEAN、REAL、DOUBLEPRECISION、 GEOMETRY或 GEOGRAPHY資料類型的資料欄會被指派RAW壓縮。
-
定義為 SMALLINT、INTEGER、、BIGINT、DECIMAL、DATE、TIME、TIMESTAMP、 TIMETZ或 的資料欄TIMESTAMPTZ會指派AZ64壓縮。
-
定義為 CHAR、 VARCHAR或 的資料欄VARBYTE會被指派LZO壓縮。
注意
如果您不想壓縮資料欄,請明確指定RAW編碼。
支援以下 compression encodings:
-
AZ64
-
BYTEDICT
-
DELTA
-
DELTA32K
-
LZO
-
MOSTLY8
-
MOSTLY16
-
MOSTLY32
-
RAW (無壓縮)
-
RUNLENGTH
-
TEXT255
-
TEXT32K
-
ZSTD
ENCODE 不支援外部資料表。
-
- NOT NULL | NULL
-
NOT NULL 指定不允許資料欄包含 null 值。NULL是預設值,指定資料欄接受 null 值。
NOT NULL 和 NULL不支援外部資料表。
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
指定資料欄上的字串搜尋或比較是 CASE_SENSITIVE 還是 CASE_ 的子句INSENSITIVE。預設值與資料庫目前的區分大小寫設定相同。
若要尋找資料庫定序資訊,請使用下列命令:
SELECT db_collation();
db_collation ---------------- case_sensitive (1 row)
- DROP 【 COLUMN 】 column_name
-
要從資料表中刪除的資料欄名稱。
您無法刪除資料表中的最後一個資料欄。資料表至少必須有一個資料欄。
您無法捨棄屬於 資料表分發金鑰 (DISTKEY) 或排序金鑰 (SORTKEY) 的資料欄。如果RESTRICT資料欄有任何相依物件,例如檢視、主金鑰、外部金鑰或UNIQUE限制,則 的預設行為DROPCOLUMN為 。
以下限制適用於從外部資料表刪除資料欄時:
-
若資料欄做為分割區使用,則無法從外部資料表刪除該資料欄。
-
您無法從使用AVRO檔案格式定義的外部資料表捨棄資料欄。
-
RESTRICT 外部資料表CASCADE會忽略 和 。
除非您將政策捨棄或中斷連結,否則您無法捨棄政策定義中參照的政策資料表資料欄。當指定 CASCADE選項時,這也適用。您可以捨棄政策資料表中的其他資料欄。
如需詳細資訊,請參閱CREATE EXTERNAL TABLE。
-
- RESTRICT
-
與 DROP 搭配使用時COLUMN,RESTRICT表示不會捨棄要捨棄的資料欄,在這些情況下:
-
如果定義的檢視參考要捨棄的資料欄
-
如果外部索引鍵參考資料欄
-
如果資料欄為分段索引鍵的一部分
RESTRICT 無法與 搭配使用CASCADE。
RESTRICT 外部資料表CASCADE會忽略 和 。
-
- CASCADE
-
與 DROP 搭配使用時COLUMN, 會移除指定的資料欄,以及與該資料欄相關的任何項目。CASCADE 無法與 搭配使用RESTRICT。
RESTRICT 外部資料表CASCADE會忽略 和 。
以下選項只適用於外部資料表。
- SET LOCATION { 's3://bucket/folder /' | 's3://bucket/manifest_file ' }
-
包含資料檔案的 Amazon S3 資料夾路徑,或包含 Amazon S3 物件路徑清單的資訊清單檔案。儲存貯體必須位於 Amazon Redshift 叢集所在的同一 AWS 區域。如需支援的 AWS 區域清單,請參閱 Amazon Redshift Spectrum 限制。如需使用資訊清單檔案的詳細資訊,請參閱 CREATE EXTERNAL TABLE 參數 LOCATION參考中的 。
- SET FILE FORMAT 格式
-
外部資料檔案的檔案格式。
有效格式如下:
-
AVRO
-
PARQUET
-
RCFILE
-
SEQUENCEFILE
-
TEXTFILE
-
- SET TABLE PROPERTIES ( 'property_name '='property_value ')
-
此子句會設定外部資料表的資料表屬性的資料表定義。
注意
資料表屬性區分大小寫。
- 'numRows'='row_count '
-
設定資料表定義 numRows 值的 屬性。若要明確更新外部資料表的統計資料,請設定 numRows 屬性以指示資料表的大小。Amazon Redshift 不會分析外部資料表來產生查詢最佳化工具用來產生查詢計劃的資料表統計資料。如果未設定外部資料表的資料表統計資料,則 Amazon Redshift 會產生查詢執行計畫。此計畫是根據外部資料表為較大資料表,而本機資料表為較小資料表的假設。
- 'skip.header.line.count'='line_count'
-
此屬性會設定每個來源檔案開頭要略過的資料列數。
- PARTITION ( partition_column =partition_value 【, ...】 SET LOCATION { 's3://bucket /folder ' | 's3://bucket /manifest_file ' }
-
此子句會設定一個或多個分割區資料欄的新位置。
- ADD 【 IF NOT EXISTS 】 PARTITION( partition_column =partition_value 【, ...】 ) LOCATION { 's3://bucket /folder ' | 's3://bucket /manifest_file ' } 【, ... 】
-
新增一或多個分割區的子句。您可以使用單一 ... ALTER TABLE ADD陳述式來指定多個PARTITION子句。
注意
如果您使用 AWS Glue 目錄,則可以使用單一ALTERTABLE陳述式新增最多 100 個分割區。
IF NOTEXISTS子句指出,如果指定的分割區已存在,則命令不應進行任何變更。也指出命令應該傳回分割區已存在的訊息,而不是在發生錯誤的情況下終止。此子句在指令碼時很有用,因此如果ALTERTABLE嘗試新增已存在的分割區,指令碼不會失敗。
- DROP PARTITION (partition_column =partition_value 【、...】 )
-
刪除指定分割區的子句。刪除分割區只會修改外部資料表中繼資料。Amazon S3 上的資料不受影響。
- ROW LEVEL SECURITY { ON | OFF } 【 CONJUNCTION TYPE { AND | 或 } 】 【 FOR DATASHARES 】
開啟或關閉關係的資料列層級安全性的子句。
開啟關係的資料列層級安全性時,您只能讀取資料列層級安全政策允許您存取的資料列。如果沒有任何政策授予您關係存取權,您就無法看到關聯中的任何資料列。只有具有
sys:secadmin
角色的超級使用者和使用者或角色才能設定ROWLEVELSECURITY子句。如需詳細資訊,請參閱資料列層級安全性。【 CONJUNCTION TYPE { AND | OR } 】
一個子句,讓您為關係選擇資料列層級安全政策的結合類型。當多個資料列層級安全政策連接至關係時,您可以將政策與 AND或 OR 子句結合。根據預設,Amazon Redshift 會將RLS政策與 AND 子句結合。具有
sys:secadmin
角色的超級使用者、使用者或角色可以使用此子句來定義關係之資料列層級安全政策的組合類型。如需詳細資訊,請參閱每個使用者結合多個政策。FOR DATASHARES
子句,用於判斷 RLS受保護的關係是否可以透過資料共用存取。根據預設,無法透過資料共用存取 RLS保護的關係。使用此子句執行的ALTERTABLEROWLEVELSECURITY命令只會影響關係的資料共用可存取性屬性。ROW LEVEL SECURITY 屬性不會變更。
如果您讓 RLS受保護的關係可透過資料共用存取,則該關係在取用者端資料共用資料庫中沒有資料列層級安全性。關係會保留其RLS屬性在生產者端。
範例
如需示範如何使用 ALTERTABLE命令的範例,請參閱以下內容。