SnowConvert AI - Vertica - CREATE TABLE

설명

논리 스키마에 테이블을 생성합니다. (Vertica SQL 언어 참조 Create Table).

경고

이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대해 변환이 보류 중입니다.

DISK_QUOTA quota
SET USING expression
ENCODING encoding-type 
ACCESSRANK integer
Copy

문법 구문

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 ]
}
Copy

테이블 옵션

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;
Copy
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" }}';
Copy

프로젝션 절

Vertica의 프로젝션은 디스크에서 데이터의 물리적 정렬 순서를 정의하고 유지 관리하여 특정 액세스 패턴에 대한 쿼리 성능을 최적화하는 메커니즘입니다. 그러나 Snowflake는 근본적으로 다른 저장소 및 최적화 전략을 사용합니다. Snowflake의 데이터는 변경할 수 없는 마이크로 파티션으로 자동 분할된 후 클라우드 서비스에서 구성 및 관리됩니다.

클러스터링 키의 삽입 또는 적용으로 인해 이러한 마이크로 파티션 내에 고유한 순서가 존재할 수 있지만, Snowflake의 쿼리 최적화 프로그램과 기본 아키텍처는 사전 정의된 전역 정렬 순서에 관계없이 쿼리 실행 중에 이러한 마이크로 파티션을 효율적으로 정리하도록 설계되었습니다. 자동 캐싱 및 열 저장소 형식과 결합된 이 접근 방식을 통해 Snowflake에서는 사용자가 Vertica의 프로젝션과 같은 물리적 데이터 구조를 수동으로 정의 및 관리할 필요 없이 높은 성능을 얻을 수 있으므로 데이터 관리가 간소화되고 명시적인 물리적 정렬 정의 없이 보다 광범위한 쿼리 패턴에 맞게 최적화할 수 있습니다.

이러한 이유로 Snowflake에서는 다음 절이 필요하지 않으므로 원래 코드에서 제거되었습니다.

[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Copy

상속된 스키마 권한 절

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;
Copy
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" }}';
Copy

제약 조건

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)
);
Copy
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" }}';
Copy

CHECK 제약 조건

Vertica의 CHECK 절에는 부울 식을 충족하기 위해 새 행이나 업데이트된 행이 필요합니다. Snowflake에는 이 절에 해당하는 절이 없으므로 SnowConvert AI에서 EWI를 추가합니다. 이는 변환된 코드에 CHECK 특성 또는 테이블 제약 조건으로 적용됩니다.

위험

이 구문은 Snowflake에서 지원되지 않습니다.

샘플 소스

Vertica
CREATE TABLE table1 (
    product_id INT PRIMARY KEY,
    quantity INT CHECK (quantity >= 0)
);
Copy
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" }}';
Copy

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)
);
Copy
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" }}';
Copy

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
);
Copy
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" }}';
Copy

CREATE TABLE AS

설명

쿼리 결과에서 테이블을 생성하고 로드합니다. (Vertica SQL 언어 참조 Create Table).

경고

이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대한 변환이 보류 중입니다.

[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Copy

문법 구문

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[,...] ) ]
Copy

테이블 옵션

세분화 절

이 구문은 Snowflake에서 필요하지 않으며 원래 코드에서 제거되었습니다. 자세한 내용은 프로젝션 절을 참조하세요.

참고

Snowflake에서는 이 구문이 필요하지 않습니다.

상속된 스키마 권한 절

INCLUDE SCHEMA PRIVILEGES는 권한이 상속되는 방식(이 경우 스키마 수준에서)을 제어하는 Vertica 고유의 기능입니다. Snowflake에는 CREATE TABLE 구문 내의 이 절과 직접적으로 동등한 구문이 없습니다. 자세한 내용은 상속된 스키마 권한 절을 참조하세요.

경고

이 구문은 Snowflake에서 지원되지 않습니다.

관련 EWIs

  1. SSC-EWI-VT0001: 상속된 권한 절은 Snowflake에서 지원되지 않습니다.

CREATE TABLE LIKE

설명

기존 테이블을 복제하여 테이블을 생성합니다. (Vertica SQL 언어 참조 Create Table).

경고

이 구문은 Snowflake에서 부분적으로 지원됩니다. 다음 절에 대한 변환이 보류 중입니다.

DISK_QUOTA quota
Copy

문법 구문

CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
  LIKE [[database.]schema.]existing-table
  [ {INCLUDING | EXCLUDING} PROJECTIONS ]
  [ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
  [ DISK_QUOTA quota ]
Copy

테이블 옵션

Projections

이 구문은 Snowflake에서 필요하지 않으며 원래 코드에서 제거되었습니다. 자세한 내용은 프로젝션 절을 참조하세요.

경고

Snowflake에서는 이 구문이 필요하지 않습니다.

상속된 스키마 권한 절

INCLUDE SCHEMA PRIVILEGES는 권한이 상속되는 방식(이 경우 스키마 수준에서)을 제어하는 Vertica 고유의 기능입니다. Snowflake에는 CREATE TABLE 구문 내의 이 절과 직접적으로 동등한 구문이 없습니다. 자세한 내용은 상속된 스키마 권한 절을 참조하세요.

경고

이 구문은 Snowflake에서 지원되지 않습니다.

관련 EWIs

  1. SSC-EWI-VT0001: 상속된 권한 절은 Snowflake에서 지원되지 않습니다.