本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
此命令會變更 Amazon Redshift 資料表或 Amazon Redshift Spectrum 外部資料表的定義。此命令會更新 CREATE TABLE 或 CREATE EXTERNAL TABLE 設定的值和屬性。您可以在檢視上使用 ALTER TABLE 來確保資料列層級安全性 (RLS)。
您不能在交易區塊 (BEGIN ... END) 內的外部資料表上執行 ALTER TABLE。如需交易的相關資訊,請參閱 可序列化隔離。
ALTER TABLE 會鎖定用於讀取和寫入操作的資料表,直到封閉 ALTER TABLE 操作的交易完成為止,除非在文件中明確說明您可以在修改資料表時,查詢資料或對資料表執行其他操作。
所需權限
修改資料表的使用者需要適當的權限,才能成功執行命令。根據 ALTER TABLE 命令的不同,使用者可能需要下列其中一項權限。
-
超級使用者
-
具有 ALTER TABLE 權限的使用者
-
具有結構描述的 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 ]
| MASKING { ON | OFF } 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 [, ...] )
若要減少執行 ALTER TABLE 命令的時間,你可以結合 ALTER TABLE 命令的部分子句。
Amazon Redshift 支援 ALTER TABLE 子句的以下組合:
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 來使用專屬結構描述。外部資料表必須以外部結構描述名稱限定。如果您要使用 ALTER TABLE 陳述式重新命名檢視或變更其擁有者,則也可以指定檢視名稱。資料表名稱的長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。您可以使用 UTF-8 多位元組字元,最長可達 4 個位元組。如需有效名稱的相關資訊,請參閱 名稱與識別碼。
- ADD table_constraint
-
新增指定限制條件至資料表的子句。如需有效 table_constraint 值得說明,請參閱 CREATE TABLE。
注意
您無法將主索引鍵限制條件新增至可為 null 的資料欄。如果資料欄原本是以 NOT NULL 限制條件建立,則您可以新增主索引鍵限制條件。
- DROP CONSTRAINT constraint_name
-
從資料表中刪除具名限制條件的子句。若要刪除限制條件,請指定限制條件名稱,而非限制條件類型。若要檢視資料表限制條件名稱,請執行下列查詢。
select constraint_name, constraint_type from information_schema.table_constraints;
- RESTRICT
-
僅移除指定限制條件的子句。RESTRICT 是 DROP CONSTRAINT 的選項。RESTRICT 不能搭配 CASCADE 使用。
- CASCADE
-
此子句會移除指定限制條件及相依於該限制條件的任何項目。CASCADE 是 DROP CONSTRAINT 的選項。CASCADE 不能搭配 RESTRICT 使用。
- OWNER TO new_owner
-
此子句會將資料表 (或檢視) 的擁有者變更為 new_owner 值。
- RENAME TO 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
的子句。考慮下列各項:-
無法同時在相同資料表上執行 ALTER DISTSTYLE、ALTER SORTKEY 和 VACUUM。
-
如果 VACUUM 目前執行中,然後執行 ALTER DISTSTYLE ALL 會傳回錯誤。
-
如果 ALTER DISTSTYLE ALL 執行中,則不會在資料表上啟動背景清空。
-
-
包含交錯排序索引鍵的資料表和暫存資料表不支援 ALTER DISTSTYLE ALL 命令。
-
如果分佈樣式先前已定義為 AUTO,則該資料表不再是自動資料表最佳化的候選項目。
如需 DISTSTYLE ALL 的相關資訊,請參閱 CREATE TABLE。
-
- ALTER DISTSTYLE EVEN
-
將資料表的現有分佈樣式變更為
EVEN
的子句。考慮下列各項:-
無法同時在相同資料表上執行 ALTER DISTSYTLE、ALTER SORTKEY 和 VACUUM。
-
如果 VACUUM 目前執行中,然後執行 ALTER DISTSTYLE EVEN 會傳回錯誤。
-
如果 ALTER DISTSTYLE EVEN 執行中,則不會在資料表上啟動背景清空。
-
-
包含交錯排序索引鍵的資料表和暫存資料表不支援 ALTER DISTSTYLE EVEN 命令。
-
如果分佈樣式先前已定義為 AUTO,則該資料表不再是自動資料表最佳化的候選項目。
如需 DISTSTYLE EVEN 的相關資訊,請參閱 CREATE TABLE。
-
- ALTER DISTKEY column_name 或 ALTER DISTSTYLE KEY DISTKEY column_name
-
會變更用作資料表的分佈索引鍵的資料欄的子句。考慮下列各項:
-
VACUUM 和 ALTER DISTKEY 無法並行在相同資料表上執行。
-
如果 VACUUM 已在執行,則 ALTER DISTKEY 會傳回錯誤。
-
如果 ALTER DISTKEY 執行中,則不會在資料表上啟動背景清空。
-
如果 ALTER DISTKEY 執行中,則前景清空會傳回錯誤。
-
-
您一次僅可以在一個資料表上執行一個 ALTER DISTKEY 命令。
-
包含交錯排序索引鍵的資料表不支援 ALTER DISTKEY 命令。
-
如果分佈樣式先前已定義為 AUTO,則該資料表不再是自動資料表最佳化的候選項目。
指定 DISTSTYLE KEY 時,資料是依 DISTKEY 資料欄中的值分佈。如需 DISTSTYLE 的相關資訊,請參閱 CREATE TABLE。
-
- ALTER DISTSTYLE AUTO
-
將資料表的現有分佈樣式變更為 AUTO 的子句。
將分佈樣式變更為 AUTO 時,資料表的分佈樣式會設定為下列內容:
-
將具有 DISTSTYLE ALL 的小型資料表轉換為 AUTO(ALL)。
-
將具有 DISTSTYLE EVEN 的小型資料表轉換為 AUTO(ALL)。
-
將具有 DISTSTYLE KEY 的小型資料表轉換為 AUTO(ALL)。
-
將具有 DISTSTYLE ALL 的大型資料表轉換為 AUTO(EVEN)。
-
將具有 DISTSTYLE EVEN 的大型資料表轉換為 AUTO(EVEN)。
-
將具有 DISTSTYLE KEY 的大型資料表轉換為 AUTO(KEY) 並保留 DISTKEY 。在這種情況下,Amazon Redshift 不會對資料表進行任何變更。
如果 Amazon Redshift 判斷新的分佈樣式或索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在未來變更資料表的分佈樣式或索引鍵。例如,Amazon Redshift 可能會將 DISTSTYLE 為 AUTO(KEY) 的資料表轉換為 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、TIMETZ、TIMESTAMP 或 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 不會再自動調整資料表中所有資料欄的編碼。這些資料欄會保留目前的編碼設定。
下列動作不會影響資料表的 ENCODE AUTO 設定:
-
重新命名資料表。
-
修改資料表的 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
-
將指定名稱的資料欄新增至資料表的子句。您只能在每個 ALTER TABLE 陳述式中新增一個資料欄。
您無法新增本身為資料表的分佈索引鍵 (DISTKEY) 或排序索引鍵 (SORTKEY) 的資料欄。
您無法使用 ALTER TABLE ADD COLUMN 命令修改以下資料表和資料欄屬性:
-
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 會將 CHAR 的長度上限設定為 4,096 個位元組,或將 VARCHAR 的長度上限設定為 65,535 個位元組。GEOMETRY 物件的大小上限是 1,048,447 位元組。
如需有關 Amazon Redshift 支援資料類型的資訊,請參閱 資料類型。
- DEFAULT default_expr
-
此子句會指派資料欄的預設資料值。default_expr 的資料類型必須符合資料欄的資料類型。DEFAULT 值必須是無變數的表達式。不允許子查詢、目前資料表中其他資料欄的交叉參考,以及使用者定義的功能。
default_expr 是在未指定資料欄值的任何 INSERT 操作中使用。若未指定預設值,則資料欄的預設值為 null。
若 COPY 操作在資料欄上遇到有 DEFAULT 值和 NOT NULL 限制條件的 null 欄位,則 COPY 命令會插入 default_expr 的值。
外部資料表不支援 DEFAULT。
- ENCODE encoding
-
資料欄的壓縮編碼。根據預設,如果您未為資料表中的任何資料欄指定壓縮編碼,或者您指定資料表的 ENCODE AUTO 選項,Amazon Redshift 會自動管理資料表中所有資料欄的壓縮編碼。
如果您為資料表中的任何資料欄指定壓縮編碼,或者未為資料表指定 ENCODE AUTO 選項,Amazon Redshift 會自動將壓縮編碼指派給您未指定壓縮編碼的資料欄,如下所示:
-
暫時資料表中的所有資料欄預設都會有指派的 RAW 壓縮。
-
定義為排序索引鍵的資料欄會有指派的 RAW 壓縮。
-
定義為 BOOLEAN、REAL、DOUBLE PRECISION、GEOMETRY 或 GEOGRAPHY 資料類型的資料行會有指派的 RAW 壓縮。
-
定義為 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP 或 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) 的資料欄。若資料欄有任何相依物件,像是檢視、主索引鍵、外部索引鍵或 UNIQUE 限制條件,則 DROP COLUMN 的預設行為是 RESTRICT。
以下限制適用於從外部資料表刪除資料欄時:
-
若資料欄做為分割區使用,則無法從外部資料表刪除該資料欄。
-
您無法從使用 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 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 目錄,則可以使用單一 ALTER TABLE 陳述式新增最多 100 個分割區。
IF NOT EXISTS 子句指出,若指定的分割區已存在,則命令不應進行任何變更。也指出命令應該傳回分割區已存在的訊息,而不是在發生錯誤的情況下終止。此子句在編寫指令碼時很實用,如此指令碼就不會因為 ALTER TABLE 嘗試新增已存在的分割區而失敗。
- DROP PARTITION (partition_column=partition_value [, ...] )
-
刪除指定分割區的子句。刪除分割區只會修改外部資料表中繼資料。Amazon S3 上的資料不受影響。
- ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]
-
開啟或關閉關係的資料列層級安全性的子句。
開啟關係的資料列層級安全性時,您只能讀取資料列層級安全政策允許您存取的資料列。如果沒有任何政策授予您關係存取權,您就無法看到關聯中的任何資料列。只有超級使用者和具有
sys:secadmin
角色的使用者或角色可以設定 ROW LEVEL SECURITY 子句。如需詳細資訊,請參閱資料列層級安全性。-
[ CONJUNCTION TYPE { AND | OR } ]
一個子句,讓您為關係選擇資料列層級安全政策的結合類型。將多個資料列層級安全政策附加至關係時,您可以將政策與 AND 或 OR 子句結合使用。根據預設,Amazon Redshift 將 RLS 政策與 AND 子句結合在一起。具有
sys:secadmin
角色的超級使用者、使用者或角色可以使用此子句來定義關係之資料列層級安全政策的組合類型。如需詳細資訊,請參閱每個使用者結合多個政策。 -
FOR DATASHARES
該子句會決定是否可透過資料共用存取受 RLS 保護的關係。預設的情況是無法透過資料共用存取受 RLS 保護的關係。搭配此子句執行的 ALTER TABLE ROW LEVEL SECURITY 命令只會影響關係的資料共用存取屬性。ROW LEVEL SECURITY 屬性並未變更。
如果您讓受 RLS 保護的關係可以透過資料庫存取,則該關係在取用者端資料庫中不會有資料列層級的安全性。關係會在生產者端保留其 RLS 屬性。
-
- 為資料共用遮罩 { ON | OFF }
子句,可判斷是否可透過資料共用存取受 DDM 保護的關係。根據預設,無法透過資料共用存取受 DDM 保護的關係。如果您讓 DDM 保護的關係可透過資料共用存取,則該關係在取用者端資料共用資料庫中不會有遮罩保護。關係會在生產者端保留其遮罩屬性。只有具有
sys:secadmin
角色的超級使用者和使用者或角色可以設定 MASKING FOR DATASHARES 子句。如需詳細資訊,請參閱動態資料遮罩。
範例
如需示範如何使用 ALTER TABLE 命令的範例,請參閱下列內容。