본문으로 건너뛰기

CREATE

CREATE SCHEMA

지정한 이름으로 스키마(데이터베이스)를 생성합니다.

개요

CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ WITH ( location = 'object_storage_location' ) ]

파라미터

[ IF NOT EXISTS ]
  • 동일한 이름의 스키마가 이미 존재하는 경우 오류 응답을 무시합니다.
[ WITH (LOCATION = 'object_storage_location') ]
  • 오브젝트 스토리지를 스키마 저장소로 사용하는 데이터 소스의 경우, 스키마의 파일이 위치할 경로를 s3로 지정할 수 있습니다.
  • 'object_storage_location'은 s3a://bucket-name/my/path 형식으로 지정해야 합니다.

CREATE TABLE

지정한 이름으로 테이블을 생성합니다.

개요

CREATE TABLE [ IF NOT EXISTS ] table_name
(
{ column_name data_type [ NOT NULL ]
[ COMMENT comment ]
[ WITH ( property_name = expression [, ...] ) ]
| LIKE existing_table_name
[ { INCLUDING | EXCLUDING } PROPERTIES ]
}
[, ...]
)
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]

파라미터

[ IF NOT EXISTS ]
  • 동일한 이름의 스키마가 이미 존재하는 경우 오류 응답을 무시합니다.
column_name data_type [ NOT NULL ]
  • 테이블의 칼럼을 정의합니다. hive의 데이터 타입에 매핑되는 data query의 데이터 타입은 다음과 같습니다.

    Hive 데이터 타입Data Query 데이터 타입
    TINYINT        TINYINT
    SMALLINTSMALLINT
    INTINTEGER
    BIGINTBIGINT
    FLOATFLOAT
    DOUBLEDOUBLE
    DECIMAL(p, s)DECIMAL(p, s)
    BOOLEANBOOLEAN
    STRINGVARCHAR
    CHAR(n)CHAR(n)
    VARCHAR(n)VARCHAR(n)
    DATEDATE
    TIMESTAMPTIMESTAMP
    INTERVALINTERVAL
    ARRAY<T>ARRAY<T>
    MAP<K, V>MAP<K, V>
    STRUCT<...>ROW(...)
[ COMMENT comment ]
  • 테이블에 주석을 추가할 수 있습니다.
[ LIKE existing_table_name ]
  • LIKE 절을 사용하여 기존 테이블의 모든 칼럼을 새 테이블에 정의할 수 있습니다. 여러 개의 LIKE 절을 이용해서 여러 테이블의 칼럼을 복사할 수 있습니다.
[ WITH (property_name = expression , ...]) ]
  • 테이블 정의에 사용할 테이블 속성(key-value pair)을 지정합니다.

    Table Attributes
    property_name설명기본 값
    bucket_count버킷 수를 지정
    - bucketed_by와 함께 사용해야 함
    0
    bucketed_by버킷에 사용할 칼럼
    - bucket_count와 함께 사용해야 함
    []
    csv_escapeCSV 이스케이프 문자
    - format='CSV' 일 때만 사용할 수 있음
    csv_quoteCSV 따옴표로 사용할 문자
    - format='CSV' 일 때만 사용할 수 있음
    csv_separatorCSV 구분자로 사용할 문자
    - format='CSV' 일 때만 사용할 수 있음
    - |와 같은 다른 구분자 사용 가능
    - U&'\0009'와 같이 탭과 같은 보이지 않는 구분자를 구성하기 위해 유니코드 사용 가능
    '
    external_locationHive external 테이블에서 사용하는 URI
    - 입력 시 external 테이블로 생성
    - 미 입력 시 managed 테이블로 생성
    - s3a://bucket-name/my/path 형식으로 지정해야 함

    ⚠️ 주의: 입력한 경로가 실제로 Object Storage에 존재하지 않는 경우 테이블이 생성되지 않습니다.
    format테이블 파일 형식입니다. ORC, PARQUET, AVRO, JSON, TEXTFILE, CSV를 지원합니다.ORC
    partitioned_by테이블의 파티셔닝에 사용할 칼럼
    - partitioned_by 절에 나열된 칼럼은 DDL에서 마지막으로 정의한 칼럼이어야 함
    []
사용 예시
CREATE TABLE 구문 Example
-- 파티셔닝과 버킷팅이 된 ORC 형식의 managed 테이블 생성
CREATE TABLE orders (
totalprice double,
orderdate date,
orderkey bigint,
orderstatus varchar
)
WITH (
format = 'ORC',
partitioned_by = ARRAY['orderkey', 'orderstatus'],
bucketed_by = ARRAY['orderdate'],
bucket_count = 50
)

-- 주석이 있는 CSV 형식의 external 테이블 생성
CREATE TABLE IF NOT EXISTS orders (
orderkey bigint,
orderstatus varchar,
totalprice double COMMENT 'Price in cents.',
orderdate date
)
COMMENT 'A table to keep track of orders.'
WITH (
external_location = 's3a://test-bucket/tpch/orders',
format = 'CSV',
csv_quote = '"',
csv_separator = ',',
)

-- LIKE를 사용한 예시
CREATE TABLE bigger_orders (
another_orderkey bigint,
LIKE orders,
another_orderdate date
)

CREATE TABLE AS

지정한 이름으로 테이블을 생성합니다.

개요

CREATE TABLE [ IF NOT EXISTS ] table_name
[ ( column_alias, ... ) ]
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]

파라미터

[ IF NOT EXISTS ]
  • 동일한 이름의 테이블이 이미 존재하는 경우 오류 응답을 무시합니다.
[ ( column_alias, ... ) ]
  • 테이블의 칼럼 이름을 입력합니다. 입력하지 않으면 AS 절 다음 쿼리의 칼럼 이름을 사용합니다.
[ COMMENT comment ]
  • 테이블에 주석을 추가할 수 있습니다.
[ WITH (property_name = expression , ...]) ]
  • 테이블 정의에 사용할 테이블 속성의 키-값 페어를 지정합니다.
  • CREATE TABLE 의 Table Attributes 표와 동일
[ WITH [ NO ] DATA ]
  • 원본 테이블과 동일한 스키마의 빈 테이블을 생성합니다.
사용 예시
CREATE TABLE AS 구문 Example
-- column aliase를 사용한 테이블 생성
CREATE TABLE orders_column_aliased (order_date, total_price)
AS
SELECT orderdate, totalprice
FROM orders

-- 쿼리문을 사용한 테이블 생성
CREATE TABLE orders_by_date
COMMENT 'Summary of orders by date'
WITH (format = 'ORC')
AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate

-- 스키마만 복사한 빈 테이블 생성
CREATE TABLE empty_nation AS
SELECT *
FROM nation
WITH NO DATA