SnowConvert: Sybase IQ DDLs¶
CREATE
단어 앞에 오는 모든 DDL 문에 대한 변환 참조입니다.
CREATE TABLE¶
설명¶
현재 데이터베이스에 새 테이블을 생성합니다. 각각 고유한 데이터 타입의 데이터를 보관하는 열 목록을 정의합니다. 테이블의 소유자는 CREATE TABLE 명령의 발급자입니다.
자세한 내용은 CREATE TABLE
설명서에서 확인할 수 있습니다.
문법 구문¶
CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE
[ IF NOT EXISTS ] [ <owner>. ]<table-name>
… ( <column-definition> [ <column-constraint> ] …
[ , <column-definition> [ <column-constraint> ] …]
[ , <table-constraint> ] … )
|{ ENABLE | DISABLE } RLV STORE
…[ IN <dbspace-name> ]
…[ ON COMMIT { DELETE | PRESERVE } ROWS ]
[ AT <location-string> ]
[PARTITION BY
<range-partitioning-scheme>
| <hash-partitioning-scheme>
| <composite-partitioning-scheme> ]
<column-definition> ::=
<column-name> <data-type>
[ [ NOT ] NULL ]
[ DEFAULT <default-value> | IDENTITY ]
[ PARTITION | SUBPARTITION ( <partition-name> IN <dbspace-name> [ , ... ] ) ]
<default-value> ::=
<special-value>
| <string>
| <global variable>
| [ - ] <number>
| ( <constant-expression> )
| <built-in-function>( <constant-expression> )
| AUTOINCREMENT
| CURRENT DATABASE
| CURRENT REMOTE USER
| NULL
| TIMESTAMP
| LAST USER
<special-value> ::=
CURRENT
{ DATE | TIME | TIMESTAMP | USER | PUBLISHER }
| USER
<column-constraint> ::=
IQ UNIQUE ( <integer> )
| { [ CONSTRAINT <constraint-name> ]
{ UNIQUE
| PRIMARY KEY
| REFERENCES <table-name> [ ( <column-name> ) ] [ ON { UPDATE | DELETE } RESTRICT ] }
[ IN <dbspace-name> ]
| CHECK ( <condition> )
}
<table-constraint> ::=
[ CONSTRAINT <constraint-name> ]
{ { UNIQUE | PRIMARY KEY } ( <column-name> [ , … ] )
[ IN <dbspace-name> ]
| <foreign-key-constraint>
| CHECK ( <condition> )
}
<foreign-key-constraint> ::=
FOREIGN KEY [ <role-name> ] [ ( <column-name> [ , <column-name> ] … ) ]
…REFERENCES <table-name> [ ( <column-name> [ , <column-name> ] … ) ]
…[ <actions> ] [ IN <dbspace-name> ]
<actions> ::=
[ ON { UPDATE | DELETE } RESTRICT ]
<location-string> ::=
{ <remote-server-name>. [ <db-name> ].[ <owner> ].<object-name>
| <remote-server-name>; [ <db-name> ]; [ <owner> ];<object-name> }
<range-partitioning-scheme> ::=
RANGE ( <partition-key> ) ( <range-partition-decl> [,<range-partition-decl> … ] )
<partition-key> ::= <column-name>
<range-partition-declaration> ::=
<range-partition-name> VALUES <= ( {<constant> | MAX } ) [ IN <dbspace-name> ]
<hash-partitioning-scheme> ::=
HASH ( <partition-key> [ , <partition-key>, … ] )
<composite-partitioning-scheme> ::=
<hash-partitioning-scheme> SUBPARTITION BY <range-partitioning-scheme>
AT LOCATION¶
설명¶
원격 테이블(프록시)을 생성합니다. (Sybase SQL Language Reference)
이 구문은 Snowflake에서 지원되지 않습니다.
Grammar Syntax
AT <location-string>
샘플 소스 패턴
입력 코드:
CREATE TABLE t1
(
DATA VARCHAR(10)
)
AT 'SERVER_A.db1.joe.t1';
출력 코드:
CREATE OR REPLACE TABLE t1
(
DATA VARCHAR(10)
)
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0002 - UNSUPPORTED REMOTE TABLE SYNTAX ***/!!!
AT 'SERVER_A.db1.joe.t1'
관련 EWIs
SSC-EWI-SY0002: 지원되지 않는 REMOTE 테이블 구문.
CONSTRAINTS
Description
이렇게 하면 테이블에 있는 데이터의 정확성과 신뢰성을 보장할 수 있습니다. 제약 조건과 데이터 작업 사이에 위반이 있는 경우 작업이 중단됩니다. (Sybase SQL Language Reference)
경고
이 구문은 부분적으로 지원됩니다.
문법 구문¶
<table-constraint> ::=
[ CONSTRAINT <constraint-name> ]
{ { UNIQUE | PRIMARY KEY } ( <column-name> [ , … ] )
[ IN <dbspace-name> ]
| <foreign-key-constraint>
| CHECK ( <condition> )
}
<foreign-key-constraint> ::=
FOREIGN KEY [ <role-name> ] [ ( <column-name> [ , <column-name> ] … ) ]
…REFERENCES <table-name> [ ( <column-name> [ , <column-name> ] … ) ]
…[ <actions> ] [ IN <dbspace-name> ]
<actions> ::=
[ ON { UPDATE | DELETE } RESTRICT ]
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE t_constraint (
id1 INT NOT NULL,
id2 INT PRIMARY KEY,
age INT CHECK (age >= 18),
email VARCHAR(255) UNIQUE,
product_id INT REFERENCES products(id) ON DELETE RESTRICT IN SOMEPLACE,
cod_iq VARCHAR(20) IQ UNIQUE(5),
CONSTRAINT unq_name_email UNIQUE (name, email),
CONSTRAINT fk_ord_line FOREIGN KEY (ord_id, line_id) REFERENCES ord_lines(ord_id,line_id)
);
출력 코드:¶
CREATE OR REPLACE TABLE t_constraint (
id1 INT NOT NULL,
id2 INT PRIMARY KEY,
age INT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
CHECK (age >= 18),
email VARCHAR(255) UNIQUE,
product_id INT REFERENCES products (id) ON DELETE RESTRICT ,
cod_iq VARCHAR(20)
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0003 - UNSUPPORTED IQ UNIQUE CONSTRAINT ***/!!!
IQ UNIQUE(5),
CONSTRAINT unq_name_email UNIQUE (name, email),
CONSTRAINT fk_ord_line FOREIGN KEY (ord_id, line_id) REFERENCES ord_lines (ord_id, line_id)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
관련 EWIs¶
SSC-EWI-0035: CHECK 문 지원되지 않음.
SSC-EWI-SY0003: 지원되지 않는 IQ 고유 제약 조건.
DEFAULT¶
설명¶
Create Table에서 열의 기본값을 정의합니다.
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다.
문법 구문¶
<default-value> ::=
<special-value>
| <string>
| <global variable>
| [ - ] <number>
| ( <constant-expression> )
| <built-in-function>( <constant-expression> )
| AUTOINCREMENT
| CURRENT DATABASE
| CURRENT REMOTE USER
| NULL
| TIMESTAMP
| LAST USER
<special-value> ::=
CURRENT
{ DATE | TIME | TIMESTAMP | USER | PUBLISHER }
| USER
샘플 소스 패턴¶
입력 코드:¶
create table t_defaults
(
col1 timestamp default current utc timestamp,
col2 timestamp default current timestamp,
col3 varchar default current user,
col4 varchar default current remote user,
col5 varchar default last user,
col6 varchar default current publisher,
col7 varchar default current date,
col8 varchar default current database,
col9 varchar default current time,
col10 varchar default user,
col11 int default autoincrement,
col12 int identity,
col13 int default -10,
col14 int default 'literal',
col15 int default null
)
;
출력 코드:¶
CREATE OR REPLACE TABLE t_defaults
(
col1 timestamp default CURRENT_TIMESTAMP,
col2 timestamp default CURRENT_TIMESTAMP,
col3 VARCHAR default CURRENT_USER,
col4 VARCHAR default
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE CURRENT REMOTE USER IN SNOWFLAKE ***/!!! current remote user,
col5 VARCHAR default
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE LAST USER IN SNOWFLAKE ***/!!! last user,
col6 VARCHAR default
!!!RESOLVE EWI!!! /*** SSC-EWI-SY0001 - UNSUPPORTED DEFAULT VALUE CURRENT PUBLISHER IN SNOWFLAKE ***/!!! current publisher,
col7 VARCHAR default CURRENT_DATE,
col8 VARCHAR default CURRENT_DATABASE,
col9 VARCHAR default CURRENT_TIME,
col10 VARCHAR DEFAULT CURRENT_USER,
col11 INT IDENTITY ORDER,
col12 INT IDENTITY ORDER,
col13 INT default -10,
col14 INT default 'literal',
col15 INT default null
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
(ENABLE | DISABLE) RLV STORE¶
설명¶
행 수준 버전 저장소 기능을 제어합니다. (Sybase SQL Language Reference).
참고
이 구문은 Snowflake에서는 필요하지 않습니다.
문법 구문¶
{ ENABLE | DISABLE } RLV STORE
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE rlv_table
(id INT)
ENABLE RLV STORE;
출력 코드:¶
CREATE TABLE rlv_table
(id INT)
;
IF NOT EXISTS¶
설명¶
테이블이 아직 존재하지 않는 경우에만 테이블이 생성되도록 하여 SQL 스크립트의 중복 및 오류를 방지합니다. (Sybase SQL Language Reference).
이 구문은 Snowflake에서 완벽하게 지원됩니다.
Grammar Syntax
IF NOT EXISTS
Sample Source Patterns
Input Code:
CREATE TABLE IF NOT EXISTS table1 (
col1 INTEGER
);
Output Code:
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" }}';
IN DBSPACE
Description
데이터 저장소를 위한 DB 공간을 지정합니다. (Sybase SQL Language Reference).
참고
이 구문은 Snowflake에서는 필요하지 않습니다. Snowflake는 저장소를 자동으로 처리합니다.
문법 구문¶
IN <dbspace-name>
샘플 소스 패턴¶
입력 코드:¶
CREATE TABLE dbspace_table (
id INT PRIMARY KEY
)
IN my_dbspace;
출력 코드:¶
CREATE OR REPLACE TABLE dbspace_table (
id INT PRIMARY KEY
);
ON COMMIT¶
설명¶
커밋이 완료될 때 임시 테이블의 동작을 지정합니다. (Sybase SQL Language Reference)
경고
이 구문은 부분적으로 지원됩니다.
문법 구문¶
[ ON COMMIT { DELETE | PRESERVE } ROWS ]
샘플 소스 패턴¶
입력 코드:¶
CREATE LOCAL TEMPORARY TABLE temp_employees (
DATA VARCHAR(255)
) ON COMMIT DELETE ROWS;
CREATE LOCAL TEMPORARY TABLE temp_projects (
DATA VARCHAR(255)
) ON COMMIT PRESERVE ROWS;
출력 코드:¶
CREATE OR REPLACE TEMPORARY TABLE temp_employees (
DATA VARCHAR(255)
)
-- --** SSC-FDM-0008 - ON COMMIT NOT SUPPORTED **
-- ON COMMIT DELETE ROWS
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
CREATE OR REPLACE TEMPORARY TABLE temp_projects (
DATA VARCHAR(255)
) ON COMMIT PRESERVE ROWS
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
관련 EWIs¶
SSC-FDM-0008: On Commit은 지원되지 않습니다.
PARTITION BY¶
설명¶
테이블 파티션의 모든 행이 물리적으로 배치됩니다. (Sybase SQL Language Reference)
참고
이 구문은 Snowflake에서는 필요하지 않습니다.
문법 구문¶
PARTITION BY
<range-partitioning-scheme>
| <hash-partitioning-scheme>
| <composite-partitioning-scheme>
<range-partitioning-scheme> ::=
RANGE ( <partition-key> ) ( <range-partition-decl> [,<range-partition-decl> … ] )
<partition-key> ::= <column-name>
<range-partition-declaration> ::=
<range-partition-name> VALUES <= ( {<constant> | MAX } ) [ IN <dbspace-name> ]
<hash-partitioning-scheme> ::=
HASH ( <partition-key> [ , <partition-key>, … ] )
<composite-partitioning-scheme> ::=
<hash-partitioning-scheme> SUBPARTITION BY <range-partitioning-scheme>
샘플 소스 패턴¶
입력 코드:¶
-- Range Partitioning
CREATE TABLE sales (
sale_id INT,
sale_date DATE,
amount DECIMAL(10, 2)
)
PARTITION BY RANGE (sale_date) (
PARTITION p1 VALUES <= ('2023-01-01'),
PARTITION p2 VALUES <= ('2024-01-01'),
PARTITION p3 VALUES < MAXVALUE
);
-- Hash Partitioning
CREATE TABLE customers (
customer_id INT,
customer_name VARCHAR(255)
)
PARTITION BY HASH (customer_id) (
PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4
);
-- Composite Partitioning (Hash-Range)
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
amount DECIMAL(10,2)
)
PARTITION BY HASH (customer_id)
SUBPARTITION BY RANGE (order_date) (
PARTITION p1 VALUES <= ('2023-01-01'),
PARTITION p2 VALUES <= ('2024-01-01'),
PARTITION p3 VALUES < MAXVALUE
);
출력 코드:¶
-- Range Partitioning
CREATE TABLE sales (
sale_id INT,
sale_date DATE,
amount DECIMAL(10, 2)
)
;
-- Hash Partitioning
CREATE TABLE customers (
customer_id INT,
customer_name VARCHAR(255)
);
-- Composite Partitioning (Hash-Range)
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
amount DECIMAL(10,2)
);
TEMPORARY TABLES¶
설명¶
Sybase에서 IQ GLOBAL | LOCAL TEMPORARY
는 해당 세션에만 존재하는 임시 테이블을 생성하는 데 사용됩니다. 이러한 테이블은 세션별로 다르며 세션이 종료되면 자동으로 삭제됩니다. 영구 데이터베이스 스키마에 영향을 주지 않고 중간 결과 또는 작업 데이터를 저장하는 데 도움이 됩니다. 또한 이름 앞에 #
을 추가해야만 생성할 수 있습니다.
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다.
문법 구문¶
CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE
샘플 소스 패턴¶
입력 코드:¶
CREATE LOCAL TEMPORARY TABLE TABLE01 (
col1 INTEGER
);
CREATE GLOBAL TEMPORARY TABLE TABLE02 (
col1 INTEGER
);
CREATE TABLE #TABLE03(
col1 INTEGER
);
출력 코드:¶
CREATE OR REPLACE TEMPORARY TABLE TABLE01 (
col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
--** SSC-FDM-0009 - GLOBAL TEMPORARY TABLE FUNCTIONALITY NOT SUPPORTED. **
CREATE OR REPLACE TABLE TABLE02 (
col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
CREATE OR REPLACE TEMPORARY TABLE T_TABLE03 (
col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "sybase", "convertedOn": "03/19/2025", "domain": "test" }}'
;
관련 EWIs¶
SSC-FDM-0009: GLOBAL TEMPORARY TABLE 기능은 지원되지 않습니다.