SnowConvert for Redshift: 변환 사양

SnowConvert 는 현재 TABLES 및 VIEWS 에 대한 평가 및 변환 기능을 제공하는 미리 보기 버전으로 제공되고 있습니다. SnowConvert 는 다른 문 유형도 인식할 수 있지만, 완전한 지원은 아직 개발 중입니다.

이 문서는 SnowConvert 를 사용하여 Redshift SQL 을 Snowflake 로 마이그레이션하기 위한 변환 사양을 간략하게 설명하며, 다양한 요소가 어떻게 변환되는지 자세히 설명하고 명확성을 위해 예제를 제공합니다.

변수 선언

  • 변수 재할당을 방지하는 Redshift의 CONSTANT 키워드는 Snowflake가 지원하지 않으므로 변환 중에 제거됩니다.

  • NOT NULL 제약 조건도 제거되지만, 기능을 유지하기 위해 기본값은 유지됩니다.

트랜잭션

  • TRUNCATE, ROLLBACK, COMMIT 문은 Redshift의 동작과 Snowflake의 잠재적 문제를 구체적으로 고려하여 처리됩니다.

  • COMMIT 또는 ROLLBACK 으로 중첩된 프로시저 호출은 Snowflake의 트랜잭션 모델로 인해 함수 차이가 발생할 수 있습니다.

커서

  • DECLARECURSOR, OPENCURSOR, FETCHCURSOR, CLOSECURSOR 는 Snowflake에서 완벽하게 지원됩니다.

데이터 타입

  • 대부분의 기본 SQL 데이터 타입은 몇 가지 제한 사항이 있지만 지원됩니다.

  • 숫자, 문자, 이진, 날짜/시간 및 기타 데이터 타입이 잠재적인 문제에 대한 자세한 메모와 함께 매핑됩니다.

  • INTERVAL 데이터 타입은 현재 Snowflake의 제한으로 인해 VARCHAR 로 변환됩니다.

숫자 형식 모델

  • 다양한 숫자 형식 모델이 Snowflake에서 등가 형식으로 지원됩니다.

  • CC, PR, RN, TH 와 같은 일부 형식은 직접적으로 동등한 기능이 없으며 수동 조정이 필요할 수 있습니다.

SQL 문 및 함수

  • CREATE MATERIALIZED VIEW: 특정 매개 변수를 사용하여 Snowflake 동적 테이블로 변환합니다.

  • CREATE EXTERNAL TABLE: 현재 일반 테이블로 변환되어 데이터 전송이 필요합니다.

  • CREATE VIEW: 일반적으로 직접 변환되지만, WITH NO SCHEMA BINDING 절에 문제가 발생할 수 있습니다.

  • CREATE DATABASE: 다양한 절은 Snowflake의 아키텍처를 특별히 고려하여 처리됩니다.

  • SELECTINTO, WITH, HAVING, WHERE, TOP, JOIN, GROUPBY, DISTINCT, UNION, INTERSECT, EXCEPT 및 여러 DDL 및 DML 문은 일반적으로 잠재적인 뉘앙스와 함께 지원됩니다.

  • 수학 및 문자열 함수는 대부분 직접 변환되지만 일부 예외와 잠재적인 동작 차이가 있습니다.

  • RANK, DENSE_RANK, ROW_NUMBER 같은 윈도우 함수는 완벽하게 지원됩니다.

  • LOWER, SUBSTRING, REPLACE, SPLIT_PART 등 시스템 함수는 일반적으로 잠재적인 문제에 대한 메모와 함께 변환됩니다.

  • IF: SnowConvert 는 조건에 괄호를 추가하고, Redshift가 조건에 괄호를 요구하지 않으며 ELSIF 가 키워드이기 때문에 ELSEIF 키워드를 ELSIF 로 변경합니다.

  • SELECT INTO: Redshift는 또한 문이 저장 프로시저 내에서 실행될 때 SELECT INTO 변수를 허용하지만, Snowflake는 SELECT INTO 에 대해서는 이 문법을 지원하지 않으며, 식은 INTO 의 왼쪽으로 이동합니다.

  • `` (https://docs.aws.amazon.com/redshift/latest/dg/c_ PLpgSQL -statements.html#r_ PLpgSQL -cursors) Snowflake는 REFCURSOR 데이터 타입을 지원하지 않으므로 REFCURSOR 변수를 RESULTSET 타입으로 변환하여 해당 기능을 복제합니다.

  • RAISE: Snowflake에서 이 기능은 지정된 레벨에 따라 콘솔을 호출하는 사용자 정의 함수(UDF)를 사용하여 에뮬레이션할 수 있습니다.

  • Open Cursor: 커서 인자는 각각의 용도에 따라 바인딩되어야 하며, SnowConvert 는 바인딩을 생성하고, 필요에 따라 OPEN 문에 전달된 값을 다시 정렬하고 반복하여 바인딩을 충족합니다.

  • RETURN: 반환 문을 Amazon Redshift에서 Snowflake로 변환하는 것은 간단하며, Snowflake의 반환 문에 NULL 을 추가하는 것만 고려하면 됩니다.

주요 고려 사항

  • 이 문서는 진행 중인 작업이며, 모든 Redshift 요소에 대한 완전한 지원은 아직 개발 중입니다.

  • 변환된 코드를 철저히 테스트하여 정확성을 보장하고 함수상의 차이를 해결하십시오.

  • 성능 영향을 고려하고 변환 후 쿼리를 최적화하십시오.

이 변환 사양은 SnowConvert 가 Redshift SQL dmf Snowflake로 마이그레이션하는 방법을 종합적으로 설명합니다. 이러한 변화를 이해하는 것은 성공적인 마이그레이션을 위해 매우 중요하며, 마이그레이션 과정에서 발생할 수 있는 문제를 예측하고 해결하는 데 도움이 될 수 있습니다.