IT Log
ALTER TABLE/COLUMN & PARTITION 본문
728x90
반응형
ALTER TABLE
-- ALTER TABLE NAME
ALTER TABLE table_name RENAME TO new_table_name;
-- ALTER TABLE PROPERTIES
ALTER TABLE table_name SET TBLPROPERTIES table_properties;
ALTER TABLE 예시
-- 가장 평범한 예시
ALTER TABLE hivetable RENAME TO newtable;
-- dt파티션이 2020-01-01인 값의 행만 TRUNCATE
ALTER TABLE hivetable SET TBLPROPERTIES ('comment'='테이블 변경');
ALTER COLUMN
COLUMN 이름/유형/위치/설명 변경
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type
[COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
- partition_spec : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
COLUMN 이름/유형/위치/설명 변경 예시
-- id컬럼을 user_id로 변경
ALTER TABLE hivetable CHANGE id user_id INT;
-- 변경한 컬럼을 name컬럼 뒤로 위치
ALTER TABLE hivetable CHANGE id user_id INT AFTER name;
-- 변경한 컬럼을 첫번째 컬럼으로 지정
ALTER TABLE hivetable CHANGE id user_id INT FIRST;
COLUMN 추가 변경
ALTER TABLE table_name [PARTITION partition_spec] ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...) [CASCADE|RESTRICT]
COLUMN 추가 변경 예시
-- address 컬럼 추가
ALTER TABLE hivetable ADD COLUMNS (address stirng);
-- 모든 열을 제거하고 새롭게 변경
-- 기존 컬럼이 id와 name이라는 가정하면 id 컬럼은 사라진다.
ALTER TABLE hivetable REPLACE COLUMNS (name string, address stirng);
PARTITION
파티션 추가
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
- partition_spec : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
파티션 복구
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];
파티션 삭제
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]
[IGNORE PROTECTION] [PURGE];
파티션 이름 변경
ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
파티션 변경
-- 파일 형식 변경
ALTER TABLE table_name [PARTITION partition_spec] SET FILEFORMAT file_format;
-- 위치 변경
ALTER TABLE table_name [PARTITION partition_spec] SET LOCATION "new location";
-- 터치 변경
ALTER TABLE table_name TOUCH [PARTITION partition_spec];
-- 보호 변경
ALTER TABLE table_name [PARTITION partition_spec] ENABLE|DISABLE NO_DROP [CASCADE];
ALTER TABLE table_name [PARTITION partition_spec] ENABLE|DISABLE OFFLINE;
-- 컴팩트 변경
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])]
COMPACT 'compaction_type'[AND WAIT]
[WITH OVERWRITE TBLPROPERTIES ("property"="value" [, ...])];
-- 연결 변경
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])] CONCATENATE;
-- 업데이트 열 변경
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])] UPDATE COLUMNS;
파티션 교환
-- table_name_1 파티션을 table_name_2로 이동
ALTER TABLE table_name_2 EXCHANGE PARTITION (partition_spec) WITH TABLE table_name_1;
-- 여러개인 경우
ALTER TABLE table_name_2 EXCHANGE PARTITION (partition_spec, partition_spec2, ...) WITH TABLE table_name_1;
728x90
반응형
'SQL > Hive(HiveQL)' 카테고리의 다른 글
CREATE/DROP/TRUNCATE TABLE (0) | 2021.03.24 |
---|---|
CREATE/DROP/ALTER DATABASE (0) | 2021.03.24 |
SELECT (0) | 2021.03.24 |
Show (0) | 2021.02.09 |
Comments