SnowConvert AI - Hive - CREATE TABLE¶
Applies to
Hive SQL
Spark SQL
Databricks SQL
설명¶
현재 데이터베이스에 새 테이블을 생성합니다. 각각 고유한 데이터 타입의 데이터를 보관하는 열 목록을 정의합니다. 테이블의 소유자는 CREATE TABLE 명령의 발급자입니다.
자세한 내용은 CREATE TABLE 설명서를 참조하세요.
문법 구문 ¶
--DATASOURCE TABLE
CREATE TABLE [ IF NOT EXISTS ] table_identifier
[ ( col_name1 col_type1 [ COMMENT col_comment1 ], ... ) ]
USING data_source
[ OPTIONS ( key1=val1, key2=val2, ... ) ]
[ PARTITIONED BY ( col_name1, col_name2, ... ) ]
[ CLUSTERED BY ( col_name3, col_name4, ... )
[ SORTED BY ( col_name [ ASC | DESC ], ... ) ]
INTO num_buckets BUCKETS ]
[ LOCATION path ]
[ COMMENT table_comment ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
[ AS select_statement ]
--HIVE FORMAT TABLE
CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] table_identifier
[ ( col_name1[:] col_type1 [ COMMENT col_comment1 ], ... ) ]
[ COMMENT table_comment ]
[ PARTITIONED BY ( col_name2[:] col_type2 [ COMMENT col_comment2 ], ... )
| ( col_name1, col_name2, ... ) ]
[ CLUSTERED BY ( col_name1, col_name2, ...)
[ SORTED BY ( col_name1 [ ASC | DESC ], col_name2 [ ASC | DESC ], ... ) ]
INTO num_buckets BUCKETS ]
[ ROW FORMAT row_format ]
[ STORED AS file_format ]
[ LOCATION path ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
[ AS select_statement ]
--LIKE TABLE
CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier
USING data_source
[ ROW FORMAT row_format ]
[ STORED AS file_format ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
[ LOCATION path ]
IF NOT EXISTS ¶
설명¶
테이블이 아직 존재하지 않는 경우에만 생성되도록 하여 SQL 스크립트에서 중복 및 오류를 방지합니다.
Hint
이 구문은 Snowflake에서 완벽하게 지원됩니다.
적용 대상¶
Hive
Spark
Databricks
문법 구문¶
IF NOT EXISTS
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE IF NOT EXISTS table1 (
col1 INTEGER
);
출력 코드:¶
CREATE TABLE IF NOT EXISTS table1 (
col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2024" }}';
PARTITION BY¶
설명¶
지정된 열을 기준으로 테이블에 파티션이 생성됩니다.
이 구문은 Snowflake에서는 필요하지 않습니다.
적용 대상¶
Hive
Spark
Databricks
문법 구문¶
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10, 2),
order_status STRING
)
PARTITIONED BY (order_status);
출력 코드:¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10, 2),
order_status STRING
);
CLUSTERED BY¶
설명¶
테이블에 생성된 파티션은 버킷팅를 위해 지정된 열을 기준으로 고정 버킷으로 버킷화됩니다.
이 문법은 부분적으로 지원됩니다.
적용 대상¶
Hive
Spark
Databricks
문법 구문¶
CLUSTERED BY (column_name1 [ASC|DESC], ...)
[SORTED BY (sort_column1 [ASC|DESC], ...)]
INTO num_buckets BUCKETS
성능 최적화에 사용되는
CLUSTERED BY절은 Snowflake에서 **CLUSTER BY**로 변환됩니다. 성능은 두 아키텍처 간에 다를 수 있습니다.Snowflake는 마이크로 파티션 내에서 데이터 정렬을 자동으로 처리하므로 마이그레이션 중에
SORTED BY절을 제거할 수 있습니다.INTO BUCKETS절, SparkSQL/Databrick 특정 분할 설정은 Snowflake에서 적용할 수 없으므로 완전히 제거해야 합니다.
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE table_name (
column1 data_type, column2 data_type, ... ) USING format CLUSTERED BY (bucketing_column1) SORTED BY (sorting_column1 DESC, sorting_column2 ASC) INTO 10 BUCKETS;
출력 코드:¶
CREATE TABLE table_name ( column1 data_type, column2 data_type, ... ) USING format
CLUSTER BY (bucketing_column1);
ROW FORMAT¶
설명¶
입력 및 출력의 행 형식을 지정합니다.
이 문법은 Snowflake에서 지원되지 않습니다.
적용 대상¶
Hive
Spark
Databricks
문법 구문¶
ROW FORMAT fow_format
row_format:
{ SERDE serde_class [ WITH SERDEPROPERTIES (serde_key = serde_val [, ...] ) ] |
{ DELIMITED [ FIELDS TERMINATED BY fields_terminated_char [ ESCAPED BY escaped_char ] ]
[ COLLECTION ITEMS TERMINATED BY collection_items_terminated_char ]
[ MAP KEYS TERMINATED BY map_key_terminated_char ]
[ LINES TERMINATED BY row_terminated_char ]
[ NULL DEFINED AS null_char ] } }
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE parquet_table ( id INT, data STRING ) STORED AS TEXTFILE LOCATION '/mnt/delimited/target' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' COLLECTION ITEMS TERMINATED BY ';' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' NULL DEFINED AS 'NULL_VALUE';
출력 코드:¶
CREATE TABLE delimited_like_delta LIKE source_delta_table STORED AS TEXTFILE LOCATION '/mnt/delimited/target'
!!!RESOLVE EWI!!! /*** SSC-EWI-HV0002 - THE ROW FORMAT CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!! ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' COLLECTION ITEMS TERMINATED BY ';' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' NULL DEFINED AS 'NULL_VALUE';
STORED AS¶
설명¶
테이블 저장소의 파일 형식입니다.
이 문법은 Snowflake에서 지원되지 않습니다.
적용 대상¶
Hive
Spark
Databricks