ALTER TABLE - Amazon Redshift

ALTER TABLE

이 명령은 Amazon Redshift 테이블 또는 Amazon Redshift Spectrum 외부 테이블의 정의를 변경합니다. 이 명령은 CREATE TABLE 또는 CREATE EXTERNAL TABLE에서 설정한 값과 속성을 업데이트합니다.

트랜잭션 블록(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 ]} 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바이트까지 표시되고 나머지는 잘립니다. 최대 4바이트까지 UTF-8 멀티바이트 문자를 사용할 수 있습니다. 유효한 이름에 대한 자세한 내용은 이름 및 식별자 섹션을 참조하세요.

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이 실행 중인 경우 백그라운드 VACCUM이 테이블에서 시작되지 않습니다.

  • 인터리브 정렬 키 및 임시 테이블이 있는 테이블에는 ALTER DISTYLE ALL 명령이 지원되지 않습니다.

  • 배포 스타일이 이전에 AUTO로 정의된 경우 테이블은 더 이상 자동 테이블 최적화의 후보가 아닙니다.

DISTSTYLE ALL에 대한 자세한 내용은 CREATE TABLE 섹션을 참조하세요.

ALTER DISTSTYLE EVEN

테이블의 기존 분산 스타일을 EVEN으로 변경하는 절입니다. 다음을 고려하세요.

  • ALTER DISTSYTLE, ALTER SORTKEY, VACUUM은 동일한 테이블에서 동시에 실행할 수 없습니다.

    • VACUUM이 현재 실행 중인 경우 ALTER DISTSTYLE EVEN을 실행하면 오류가 반환됩니다.

    • ALTER DISTSTYLE EVEN이 실행 중인 경우 백그라운드 VACCUM이 테이블에서 시작되지 않습니다.

  • 인터리브 정렬 키 및 임시 테이블이 있는 테이블에는 ALTER DISTYLE EVEN 명령이 지원되지 않습니다.

  • 배포 스타일이 이전에 AUTO로 정의된 경우 테이블은 더 이상 자동 테이블 최적화의 후보가 아닙니다.

DISTSTYLE EVEN에 대한 자세한 내용은 CREATE TABLE 섹션을 참조하세요.

ALTER DISTKEY column_name 또는 ALTER DISTSTYLE KEY DISTKEY column_name

테이블의 배포 키로 사용되는 열을 변경하는 절입니다. 다음을 고려하세요.

  • VACUUM 및 ALTER DISTKEY는 동일한 테이블 상에서 동시에 실행할 수 없습니다.

    • VACUUM이 이미 실행 중인 경우 ALTER DISTKEY가 오류를 반환합니다.

    • ALTER DISTKEY가 실행 중인 경우 백그라운드 VACCUM이 테이블에서 시작되지 않습니다.

    • ALTER DISTKEY가 실행 중인 경우 포그라운드 VACCUM이 오류를 반환합니다.

  • 테이블에서 한 번에 하나의 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는 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는 향후 테이블의 정렬 키를 변경할 수 있습니다.

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는 더 이상 테이블의 모든 열에 대한 인코딩을 자동으로 조정하지 않습니다. 열은 현재 인코딩 설정을 유지합니다.

다음 작업은 테이블의 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

열에 대한 압축 인코딩입니다. 기본적으로 Amazon Redshift는 테이블의 열에 대해 압축 인코딩을 지정하지 않거나 테이블에 대해 ENCODE AUTO 옵션을 지정하는 경우 테이블의 모든 열에 대한 압축 인코딩을 자동으로 관리합니다.

테이블의 열에 대해 압축 인코딩을 지정하거나 테이블에 대해 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

  • 델타

  • 델타

  • LZO

  • LZO

  • LZO

  • LZO

  • 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 속성을 유지합니다.

예시

ALTER TABLE 명령을 사용하는 방법을 보여주는 예제는 다음을 참조하세요.