SnowConvert AI - PostgreSQL 문제¶
참고
변환 범위
PostgreSQL용 SnowConvert AI는 주로 TABLES 및 VIEWS에 대한 평가 및 변환 기능에 중점을 둡니다. SnowConvert AI는 다른 유형의 ANSI-표준 문을 인식할 수 있지만 아직 변환이 완전히 지원되지 않습니다. 즉, 이 도구는 해당 문을 식별할 수는 있지만 지원되지 않는 코드 단위에 대해 완전한 변환을 수행하지는 않습니다.
SSC-EWI-PG0001¶
age는 Snowflake에서 지원되지 않습니다
심각도¶
Medium
설명¶
이 오류는 SnowConvert AI가 age()를 지원하지 않기 때문에 추가됩니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
SELECT
age(date1::date, date2::date)
FROM
Table1;
생성된 코드:¶
Snowflake¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "age", "Table1" **
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0001 - AGE IS NOT SUPPORTED ON SNOWFLAKE. ***/!!!
AGE(date1::date, date2::date)
FROM
Table1;
모범 사례¶
Datediff시간 함수는 쿼리의 목적이 특정 범위의 값을 얻는 경우 일부 시나리오를 해결할 수 있지만, 시나리오마다 수동으로 처리되어야 합니다. 자세한 내용은 Datediff에 대한 Snowflake 설명서를 참조하세요.추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0002¶
Constraint 인덱스 매개 변수는 지원되지 않습니다
심각도¶
낮음
설명¶
Snowflake에서는 Constraint에 다음 인덱스 매개 변수를 사용할 수 없습니다.
INCLUDE
WITH
USING INDEX TABLESPACE
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod) INCLUDE(code)
);
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name) WITH (fillfactor=70)
);
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name) USING INDEX TABLESPACE tablespace_name
);
생성된 코드:¶
Snowflake¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - INCLUDE PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! INCLUDE(code)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - WITH PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! WITH (fillfactor=70)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - USING PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! USING INDEX TABLESPACE tablespace_name
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0003¶
상속은 지원되지 않습니다
심각도¶
낮음
설명¶
테이블 간의 상속은 PostgreSQL에서는 허용되지만, Snowflake에서는 지원되지 않습니다. PostgreSQL의 상속에 대한 자세한 내용을 확인하려면 여기를 클릭하세요.
코드 예제¶
입력 코드:¶
PostgreSQL¶
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
생성된 코드:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0003 - TABLE INHERITANCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0004¶
Exclude 제약 조건은 지원되지 않습니다
심각도¶
Medium
설명¶
PostgreSQL에 사용된 Exclude 제약 조건은 Snowflake에서 지원되지 않습니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE TABLE Table1 (
id int,
EXCLUDE USING gist (id WITH &&)
);
생성된 코드:¶
Snowflake¶
CREATE TABLE Table1 (
id int,
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0004 - EXCLUDE CONSTRAINT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
EXCLUDE USING gist (id WITH &&)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0006¶
Snowflake는 레이블을 사용한 변수 참조를 지원하지 않습니다.
심각도¶
Medium
설명¶
이 오류는 FOR 루프의 본문에서 레이블을 사용하여 변수를 참조하는 경우에 추가됩니다. Snowflake는 정규화된 이름을 사용한 변수 참조를 지원하지 않습니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE procedure1(out result VARCHAR(100))
LANGUAGE plpgsql
AS $$
BEGIN
result := '<';
<<outer_loop>>
for i in 1..3 loop
<<inner_loop>>
for i in 4..6 loop
result := result || '(' || outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
생성된 코드:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE procedure1 (result OUT VARCHAR(100))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
BEGIN
result := '<';
for i in 1 TO 3
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
for i in 4 TO 6
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
result := result || '(' ||
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0006 - REFERENCE TO A VARIABLE USING THE LABEL IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0007¶
동적 SQL의 INTO 절은 Snowflake에서 지원되지 않습니다.
심각도¶
낮음
설명¶
PostgreSQL 동적 SQL에서는 INTO 절을 통해 쿼리 결과를 변수에 저장할 수 있습니다. Snowflake는 이 기능을 지원하지 않습니다. 따라서 INTO 절은 EWI로 플래그가 지정됩니다.
코드 예제¶
입력 코드:¶
PosgreSQL¶
CREATE OR REPLACE PROCEDURE get_max_id(table_name VARCHAR, OUT max_id INTEGER)
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE sql_statement INTO max_id;
END;
$$ LANGUAGE plpgsql;
생성된 코드:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE get_max_id (table_name VARCHAR, max_id OUT INTEGER)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE IMMEDIATE sql_statement
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0007 - INTO CLAUSE IN DYNAMIC SQL IS NOT SUPPORTED IN SNOWFLAKE. ***/!!! INTO max_id;
END;
$$;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0008¶
to_char 함수 내에서의 interval 사용은 Snowflake에서 지원되지 않습니다.
심각도¶
높음
설명¶
to_char 내에서 interval을 사용하여 날짜 및 시간 데이터 타입을 텍스트로 변환하는 기능은 Snowflake에서 지원되지 않습니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
SELECT to_char(interval '15h 2m 12s', 'HH24:MI:SS');
생성된 코드:¶
Snowflake¶
SELECT to_char(INTERVAL '15h, 2m, 12s', 'HH24:MI:SS') !!!RESOLVE EWI!!! /*** SSC-EWI-PG0008 - THE USE OF INTERVAL WITHIN TO_CHAR IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!;
자세한 내용은 다음 섹션을 참조하세요.
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0009¶
Comment on ‘Type’은 Snowflake에서 지원되지 않습니다.
심각도¶
낮음
설명¶
원본 코드에는 주석 처리할 수 있는 다양한 오브젝트가 있습니다. 그러나 Snowflake에서는 이러한 오브젝트 중 일부가 존재하지 않으므로 해당 오브젝트에 주석을 할당할 수 없습니다. 이러한 시나리오를 처리하기 위한 코드는 잠재적인 오류를 방지하기 위해 주석 처리됩니다.
코드 예제¶
입력 코드:¶
PostgreSql¶
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
생성된 코드:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0009 - COMMENT ON 'RULE' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0010¶
Create Temporary Sequence는 Snowflake에서 지원되지 않습니다
심각도¶
낮음
설명¶
PostgreSQL에서 임시 시퀀스가 생성되면 활성 세션에 대해서만 생성되며 세션에서 로그아웃하면 자동으로 삭제됩니다. 그러나 Snowflake에서는 이 기능을 사용할 수 없으므로 일반 시퀀스로 생성됩니다. 실행 시, 유사한 시퀀스 이름이 이미 존재할 수 있으며 이로 인해 기존 오브젝트에 오류가 발생합니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE TEMPORARY SEQUENCE sequence1;
CREATE TEMP SEQUENCE sequence2;
생성된 코드:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMPORARY !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence1;
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMP !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence2;
모범 사례¶
생성 문제가 있는 경우 충돌을 방지하기 위해 시퀀스의 이름을 바꿀 수 있습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0011¶
시퀀스 옵션 ‘option_name’은 Snowflake에서 지원되지 않습니다.
심각도¶
낮음
설명¶
PostgreSQL에서 시퀀스 문에 사용할 수 있는 일부 옵션은 Snowflake에서 지원되지 않습니다.
지원되지 않는 옵션은 다음과 같습니다.
Unlogged.
AS <data_type>.
MinValue.
MaxValue.
No MinValue.
No MaxValue.
Cache.
Cycle.
Owner By.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE UNLOGGED SEQUENCE sequence_name;
생성된 코드:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE UNLOGGED !!!RESOLVE EWI!!! /*** SSC-EWI-PG0011 - 'UNLOGGED' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence_name;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0012¶
NOT VALID 제약 조건 옵션은 Snowflake에서 지원되지 않습니다.
설명¶
NOT VALID 제약 조건 옵션은 제약 조건을 추가하거나 변경할 때 기존 데이터가 제약 조건을 준수하는지 확인하지 않고 제약 조건을 추가하거나 수정해야 함을 나타내기 위해 사용됩니다. 이 절은 Snowflake에서 지원되지 않습니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
ALTER TABLE Table1 *
ADD CONSTRAINT const UNIQUE (zip) NOT VALID;
생성된 코드:¶
Snowflake¶
ALTER TABLE Table1
ADD CONSTRAINT const UNIQUE (zip)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0012 - NOT VALID CONSTRAINT OPTION IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! NOT VALID;
모범 사례¶
추가 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0014¶
Snowflake 스크립팅 커서는 방향 가져오기를 지원하지 않습니다
심각도¶
Medium
설명¶
Snowflake에서 FETCH cursor 문은 항상 커서의 다음 행을 가져옵니다. 코드를 변환할 때, SnowConvert AI는 Snowflake와 기능적으로 동등한 FETCH NEXT에 해당하는 커서 방향을 변환합니다.
FETCH NEXTFETCH FORWARDFETCH RELATIVE 1FETCH(지정된 방향 없음)
다른 방향은 지원되지 않으며 FETCH 문은 이를 반영하기 위해 EWI를 표시합니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE cursor_test()
AS $$
BEGIN
FETCH FORWARD FROM cursor1 INTO my_var;
FETCH FIRST FROM cursor1 INTO my_var;
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
생성된 코드:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE cursor_test ()
RETURNS VARCHAR
AS $$
BEGIN
FETCH
cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH FIRST FROM cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0015¶
대상 변수가 없는 커서 가져오기는 Snowflake에서 지원되지 않습니다
심각도¶
Medium
설명¶
PostgreSQL에서는 INTO 없는 FETCH 문을 사용하여 가져온 행의 값을 콘솔에 인쇄할 수 있습니다. 그러나 Snowflake에서는 가져온 행 값이 저장될 변수와 함께 INTO를 지정하기 위해 FETCH문이 필요합니다.
코드에서 INTO가 없는 FETCH가 발견될 때마다 SnowConvert AI는 이 FETCH 유형이 지원되지 않음을 알리기 위해 이 EWI를 생성합니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
FETCH PRIOR FROM cursor1;
생성된 코드:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0015 - FETCH CURSOR WITHOUT TARGET VARIABLES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FETCH PRIOR FROM cursor1;
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-PG0016¶
bit 문자열 유형이 Varchar 유형으로 변환되었습니다
심각도¶
낮음
설명¶
PostgreSQL에서 마이그레이션할 때, BIT 문자열 유형 및 관련 함수는 Snowflake에서 기본적으로 지원되지 않습니다. 이러한 데이터 타입은 Snowflake의 VARCHAR로 변환됩니다. 이러한 변환은 해당 열에 대한 비트 연산을 사용하는 모든 PostgreSQL 쿼리 또는 애플리케이션 논리가 Snowflake에서 동일한 기능을 달성하기 위해 상당한 수정이 필요함을 의미합니다.
코드 예제¶
입력 코드:¶
PostgreSQL¶
CREATE TABLE table1 (
col1 bit(10)
);
생성된 코드:¶
Snowflake¶
CREATE TABLE table1 (
col1 CHARACTER(10) !!!RESOLVE EWI!!! /*** SSC-EWI-PG0016 - BIT DATA TYPE CONVERTED TO CHARACTER ***/!!!
);
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.