SnowConvert AI - Vertica - CREATE TABLE¶
설명¶
논리 스키마에 테이블을 생성합니다. (Vertica SQL 언어 참조 Create Table).
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대해 변환이 보류 중입니다.
DISK_QUOTA quota
SET USING expression
ENCODING encoding-type
ACCESSRANK integer
문법 구문¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
( column-definition[,...] [, table-constraint [,...]] )
[ ORDER BY column[,...] ]
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
<column-definition> ::=
column-name data-type
[ column-constraint ][...]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
<column-constraint> ::=
[ { AUTO_INCREMENT | IDENTITY } [ (args) ] ]
[ CONSTRAINT constraint-name ] {
[ CHECK (expression) [ ENABLED | DISABLED ] ]
[ [ DEFAULT expression ] [ SET USING expression } | DEFAULT USING expression ]
[ NULL | NOT NULL ]
[ { PRIMARY KEY [ ENABLED | DISABLED ] REFERENCES table [( column )] } ]
[ UNIQUE [ ENABLED | DISABLED ] ]
}
<table-constraint>::=
[ CONSTRAINT constraint-name ]
{
... PRIMARY KEY (column[,... ]) [ ENABLED | DISABLED ]
... | FOREIGN KEY (column[,... ] ) REFERENCES table [ (column[,...]) ]
... | UNIQUE (column[,...]) [ ENABLED | DISABLED ]
... | CHECK (expression) [ ENABLED | DISABLED ]
}
테이블 옵션¶
Order By¶
Vertica에서는 이 ORDER BY 절은 테이블에 최적화된 저장소 구조인 수퍼프로젝션 내에서 데이터가 물리적으로 정렬되는 방식을 지정합니다. 테이블 생성 시 이러한 명시적 물리적 순서는 Snowflake에서 직접 지원되지 않습니다. 자세한 내용은 SSC-EWI-VT0002를 참조하세요.
샘플 소스¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
ORDER BY measurement_date, business_unit, metric_category;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0002 - ORDER BY TABLE OPTION IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
ORDER BY measurement_date, business_unit, metric_category
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
프로젝션 절¶
Vertica의 프로젝션은 디스크에서 데이터의 물리적 정렬 순서를 정의하고 유지 관리하여 특정 액세스 패턴에 대한 쿼리 성능을 최적화하는 메커니즘입니다. 그러나 Snowflake는 근본적으로 다른 저장소 및 최적화 전략을 사용합니다. Snowflake의 데이터는 변경할 수 없는 마이크로 파티션으로 자동 분할된 후 클라우드 서비스에서 구성 및 관리됩니다.
클러스터링 키의 삽입 또는 적용으로 인해 이러한 마이크로 파티션 내에 고유한 순서가 존재할 수 있지만, Snowflake의 쿼리 최적화 프로그램과 기본 아키텍처는 사전 정의된 전역 정렬 순서에 관계없이 쿼리 실행 중에 이러한 마이크로 파티션을 효율적으로 정리하도록 설계되었습니다. 자동 캐싱 및 열 저장소 형식과 결합된 이 접근 방식을 통해 Snowflake에서는 사용자가 Vertica의 프로젝션과 같은 물리적 데이터 구조를 수동으로 정의 및 관리할 필요 없이 높은 성능을 얻을 수 있으므로 데이터 관리가 간소화되고 명시적인 물리적 정렬 정의 없이 보다 광범위한 쿼리 패턴에 맞게 최적화할 수 있습니다.
이러한 이유로 Snowflake에서는 다음 절이 필요하지 않으므로 원래 코드에서 제거되었습니다.
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
상속된 스키마 권한 절¶
INCLUDE SCHEMA PRIVILEGES는 권한이 상속되는 방식(이 경우 스키마 수준에서)을 제어하는 Vertica 고유의 기능입니다. Snowflake에는 CREATE TABLE 구문 내의 이 절과 직접적으로 동등한 구문이 없습니다. Snowflake의 권한은 GRANT 문을 통해 명시적으로 관리됩니다.
경고
이 구문은 Snowflake에서 지원되지 않습니다.
샘플 소스¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
INCLUDE SCHEMA PRIVILEGES;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0001 - INHERITED PRIVILEGES CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
INCLUDE SCHEMA PRIVILEGES
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
제약 조건¶
IDENTITY - AUTO_INCREMENT¶
해당 값이 데이터베이스에서 자동으로 생성 및 관리되는 테이블 열을 만듭니다. 이 열의 값을 변경하거나 로드할 수 없습니다. 이 제약 조건은 하나의 테이블 열에만 설정할 수 있습니다.
성공
이 구문은 Snowflake에서 완벽하게 지원됩니다.
샘플 소스¶
Vertica¶
CREATE TABLE customers (
id AUTO_INCREMENT(1, 2),
name VARCHAR(50)
);
CREATE TABLE customers2 (
id IDENTITY(1, 2),
name VARCHAR(50)
);
Snowflake¶
CREATE TABLE customers (
id INT AUTOINCREMENT(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE customers2 (
id INT IDENTITY(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CHECK 제약 조건¶
Vertica의 CHECK 절에는 부울 식을 충족하기 위해 새 행이나 업데이트된 행이 필요합니다. Snowflake에는 이 절에 해당하는 절이 없으므로 SnowConvert AI에서 EWI를 추가합니다. 이는 변환된 코드에 CHECK 특성 또는 테이블 제약 조건으로 적용됩니다.
위험
이 구문은 Snowflake에서 지원되지 않습니다.
샘플 소스¶
Vertica¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT CHECK (quantity >= 0)
);
Snowflake¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!! CHECK (quantity >= 0)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
DEFAULT 제약 조건¶
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다.
Vertica의 기본 DEFAULT 절은 완전하게 지원되며 Snowflake로 직접 변환됩니다. 그렇지만 Vertica의 DEFAULT USING 절에서는 부분적인 변환이 진행됩니다. Snowflake는 새 행이 삽입될 때 DEFAULT 값을 올바르게 적용하지만 USING 부분의 지연된 새로 고침 기능과 직접적으로 동등한 기능이 없으며, 일부 표현식은 Snowflake에서 지원되지 않을 수 있습니다. 따라서 이 기능적 차이점을 강조하기 위해 경고가 추가됩니다.
샘플 소스¶
Vertica¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT USING (base_value + 100)
);
Snowflake¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT (base_value + 100) /*** SSC-FDM-VT0001 - EXPRESSION IN USING CONSTRAINT MIGHT NOT BE SUPPORTED IN SNOWFLAKE ***/
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
PRIMARY KEY - UNIQUE - FOREIGN KEY¶
SnowConvert AI는 제약 조건 정의를 유지합니다. 그러나 Snowflake에서는 다른 데이터베이스에서 쉽게 마이그레이션할 수 있도록 하기 위해 이러한 속성이 제공됩니다. Snowflake에서는 이들 속성을 적용하거나 유지 관리하지 않습니다. 이는 이러한 속성의 기본값을 변경할 수 있지만, 기본값을 변경하면 Snowflake에서 제약 조건을 만들지 않게 된다는 뜻입니다.
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다.
샘플 소스¶
Vertica¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLED
);
Snowflake¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE AS¶
설명¶
쿼리 결과에서 테이블을 생성하고 로드합니다. (Vertica SQL 언어 참조 Create Table).
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대한 변환이 보류 중입니다.
[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
문법 구문¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
[ ( column-name-list ) ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
AS [ /*+ LABEL */ ] [ AT epoch ] query [ ENCODED BY column-ref-list ] [ segmentation-spec ]
<column-name-list> ::=
column-name-list
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
테이블 옵션¶
세분화 절¶
이 구문은 Snowflake에서 필요하지 않으며 원래 코드에서 제거되었습니다. 자세한 내용은 프로젝션 절을 참조하세요.
참고
Snowflake에서는 이 구문이 필요하지 않습니다.
상속된 스키마 권한 절¶
INCLUDE SCHEMA PRIVILEGES는 권한이 상속되는 방식(이 경우 스키마 수준에서)을 제어하는 Vertica 고유의 기능입니다. Snowflake에는 CREATE TABLE 구문 내의 이 절과 직접적으로 동등한 구문이 없습니다. 자세한 내용은 상속된 스키마 권한 절을 참조하세요.
경고
이 구문은 Snowflake에서 지원되지 않습니다.
관련 EWIs¶
SSC-EWI-VT0001: 상속된 권한 절은 Snowflake에서 지원되지 않습니다.
CREATE TABLE LIKE¶
설명¶
기존 테이블을 복제하여 테이블을 생성합니다. (Vertica SQL 언어 참조 Create Table).
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대한 변환이 보류 중입니다.
DISK_QUOTA quota
문법 구문¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
LIKE [[database.]schema.]existing-table
[ {INCLUDING | EXCLUDING} PROJECTIONS ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
테이블 옵션¶
Projections¶
이 구문은 Snowflake에서 필요하지 않으며 원래 코드에서 제거되었습니다. 자세한 내용은 프로젝션 절을 참조하세요.
경고
Snowflake에서는 이 구문이 필요하지 않습니다.
상속된 스키마 권한 절¶
INCLUDE SCHEMA PRIVILEGES는 권한이 상속되는 방식(이 경우 스키마 수준에서)을 제어하는 Vertica 고유의 기능입니다. Snowflake에는 CREATE TABLE 구문 내의 이 절과 직접적으로 동등한 구문이 없습니다. 자세한 내용은 상속된 스키마 권한 절을 참조하세요.
경고
이 구문은 Snowflake에서 지원되지 않습니다.
관련 EWIs¶
SSC-EWI-VT0001: 상속된 권한 절은 Snowflake에서 지원되지 않습니다.